C ++是否允许在任何功能之外进行函数调用?

Mr *_*ang 6 c++ linux

我有代码

#include <stdlib.h>

void *gg = malloc(55);

int main(int argc, char **argv)
{
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

gcc无法编译,但g ++可以工作。

因此,我只想确保在执行main之前发生malloc调用。

P.W*_*P.W 8

C ++允许您执行操作。C ++标准有一整节关于“非局部变量的动态初始化”

查看GCC为您的代码生成的程序集具有指导意义:

在这里,初始化程序通过两个生成的函数_GLOBAL__sub_I_gg(在之前main调用)调用,然后依次调用__static_initialization_and_destruction_0

它在后一个函数的主体内,您可以找到对的调用malloc