c - 全局声明是在栈中还是堆中?

标签 c

我需要声明一个不在堆栈内存中而是在堆中的变量,如下所示

struct mystruct *name;

我应该在文件开头的所有函数之外(甚至在 main() 之外)声明它吗?

最佳答案

请注意,变量永远不会声明为“在堆上”。只能在堆上分配由指针指向的内存。

在您的示例中,您确实可以在任何函数之外声明 name ,然后它将存在于全局内存中。您还可以在函数内删除变量,前面加上关键字static。后者也会在全局内存中分配变量,但它仅在声明它的函数中可见。

要使用指针变量,您现在必须为其指向分配内存,您可以使用 malloc 在堆上分配该内存。

关于c - 全局声明是在栈中还是堆中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33521994/

相关文章:

c - 在 C 中设置 shell 的 PATH 和 HOME 环境变量

c - 当我尝试使用 struct 运行程序时出现段错误(核心已转储)

c - 如何从函数返回可变大小的字符串?

c - 为什么以下代码片段中的 050 不等于 50?

python - python 和 c 信号处理程序如何协同工作?

将负数从 String 转换为 unsigned Long

c - 系统调用 Hook 示例参数不正确

c - 将行分割成单词数组 + C

c++ - 尝试在不使用 nanosleep/usleep 的情况下在 C 函数中创建延迟

C 编程术语