我试图在C语言中的一个函数内部用malloc初始化一个静态变量,但是出现了"initializer not constant error" 的错误。我知道在C语言中不能使用非常数值进行静态初始化,但有没有人能想到解决办法?我需要代码具有与这个相同的效果:
static int *p = (int *)malloc(sizeof(int));
有什么诀窍或变通方法吗?
编辑:我有一个函数,每次标志位高时就会调用它。在这个函数中,我正在创建并启动一个新线程。我声明了一个指向结构体的指针,并使用malloc来分配内存,然后将该指针传递给线程。然后函数返回控制权。当我重新进入该函数时,最初打开的线程仍然在运行,我希望能够访问最初传递给该线程的内存区域。这就是为什么我需要一个静态变量,以便在第一次调用时进行malloc,然后在后续调用中使用相同的地址。这样我就可以从线程中获得信息。所有这些都是为了避免使用全局变量。