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

时间:2019-03-15 07:31:38

标签: c++ linux

我有代码

#include <stdlib.h>

void *gg = malloc(55);

int main(int argc, char **argv)
{
        return 0;
}

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

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

1 个答案:

答案 0 :(得分:8)

您的工作在C ++中是允许的。 C ++标准在"Dynamic initialization of non-local variables"上有一整节。

在程序集generated by GCC中查找代码具有指导意义:

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

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