我想知道是否有人可以对c ++中的内存释放进程有所了解.
如果我有一个我声明为静态的结构,那么它的构造函数是第一个执行的东西,它的析构函数是最后执行的东西:
struct initializer execute_before_and_after_main {
initializer() { init(); }
~initializer() { cleanup(); }
}
static initializer execute_around_main;
Run Code Online (Sandbox Code Playgroud)
然后我有类似的东西:
class my_class {
my_object objects[100];
}
extern my_class gobal_my_class;
my_class global_my_class;
Run Code Online (Sandbox Code Playgroud)
主要在这里并不重要:
int main (int argc, char* argv[]) {
....
}
Run Code Online (Sandbox Code Playgroud)
当cleanup()被调用时,是objects现在含有解除分配的/无效的存储器阵列?是否存在c ++在此实现的标准初始化/破坏序列,有人可能指向我?
谢谢
编辑:我理解这种类型的代码可能不是最佳实践,但我仍然想知道行为是否已定义.