我需要声明一个不在堆栈内存中而是在堆中的变量,如下所示
struct mystruct *name;
我应该在文件开头的所有函数之外(甚至在 main() 之外)声明它吗?
最佳答案
请注意,变量永远不会声明为“在堆上”。只能在堆上分配由指针指向的内存。
在您的示例中,您确实可以在任何函数之外声明 name
,然后它将存在于全局内存中。您还可以在函数内删除变量,前面加上关键字static
。后者也会在全局内存中分配变量,但它仅在声明它的函数中可见。
要使用指针变量,您现在必须为其指向分配内存,您可以使用 malloc
在堆上分配该内存。
关于c - 全局声明是在栈中还是堆中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33521994/