我有代码
#include <stdlib.h>
void *gg = malloc(55);
int main(int argc, char **argv)
{
return 0;
}
gcc 无法编译,但 g++ 可以。
所以,我只想确保 malloc 调用发生在 main 执行之前。
最佳答案
你做的事在 C++ 中是允许的。 C++ 标准有一整节关于 "Dynamic initialization of non-local variables" .
查看程序集 generated by GCC对于您的代码具有指导意义:
此处初始化器通过两个生成的函数调用,_GLOBAL__sub_I_gg
(在 main
之前调用)依次调用 __static_initialization_and_destruction_0
。
在后一个函数的主体中,您会发现对 malloc
的调用。
关于c++ - c++是否允许在任何函数之外调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55177633/