c - 如何在 C 中使用 malloc 初始化静态指针?

标签 c static malloc constants initializer

我试图在 C 中使用 malloc 初始化一个静态变量(在函数内),但我收到“初始化程序不是常量错误”。我知道我不能在 C 中用非常量启动静态,但有人能想到解决方案吗?我需要代码具有与此相同的效果:

static int *p = (int *)malloc(sizeof(int));

是否有技巧/解决方法?

编辑:我有一个函数,每次标志变高时都会调用它。在这个函数中,我正在创建并启动一个新线程。我声明一个指向结构的指针并使用 malloc 分配内存,然后将此指针传递给线程。然后该函数返回控制权。当我重新进入该函数时,我最初打开的线程仍将运行,我希望能够访问我最初传递给该线程的内存区域。这就是为什么我需要一个静态的,以便我可以在第一次调用时 malloc,然后在后续调用中使用相同的地址。这样我就可以从线程中获取信息。所有这些都是为了避免使用全局变量。

最佳答案

static int *p = NULL;
if(!p) p = (int *)malloc(sizeof(int));

关于c - 如何在 C 中使用 malloc 初始化静态指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16724801/

相关文章:

ios - 如何判断 malloc 是否在 iOS 上 swift 失败?

c - C 中的魔法与 malloc、fork 和 open

用 C 调用 Lua 字符串

Swift - 在静态/类函数中引用当前类类型

c - 退出哪个进程以及为什么在 exit(0) 之后调用 close(0)

java - 在 Java 的主要静态方法中调用非静态方法

java - 这在Java中是线程安全的吗?

c - 函数内的 malloc char*,valgrind 报告内存泄漏

c - LLVM Pass 插入一个外部函数调用到 LLVM 位码

c - 如何创建一个多维数组,其维度基于 C 中的变量?