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