杀进程后内存释放顺序导致的问题

标签 IT工具网 编程

杀进程后,会先执行全局对象的析构函数,再销毁堆内存,析构全局对象后,如果还在访问该对象,那么会发生crash.

解决方案:

  1. 将全局对象改为指针并在堆上分配。

  2. 不要释放掉全局对象,也就是阻止全局对象调用析构函数,Apple平台(iOS/MacOS)可以在对象声明前加上[[clang::no_destroy]],比如:[[clang::no_destroy]] MyClass obj;,这样编译后的代码保证不会调用这个对象的析构函数。

相关文章:

如何避免在JSP文件中使用Java代码

JavaScript中的falsy values

一些JavaScript的编码习惯和奇怪写法

设置AVAudioSessionCategoryPlayAndRecord时才能切换扬声器和听筒

JavaScript的参数传递方式:传值or传引用

Java如何遍历map对象

Java修饰符:public,protected,private,不加修饰符。有什么区别呢?

Java将InputStream转换为String

怎样在一个<div>中水平居中另一个<div>

JSON内容的HTTP Header该怎么填?