考虑到内存分为数据、堆、栈和代码四个部分,全局变量、静态变量、常量数据类型、函数声明和定义中的局部变量、主函数中的变量、指针以及使用 malloc 和 calloc 动态分配的空间会被存储在哪些部分呢?
我认为它们会被分配如下:
- 全局变量 -------> 数据段
- 静态变量 -------> 数据段
- 常量数据类型 -----> 代码段
- 函数声明和定义中的局部变量 -------> 栈
- 主函数中声明和定义的变量 -------> 堆
- 指针(例如: char *arr, int * arr) -------> 堆
- 使用 malloc 和 calloc 动态分配的空间 -------> 堆
我仅从 C 的角度来参考这些变量。
如果我有错误之处,请您纠正,因为我对C语言还很陌生。
main
只是另一个函数。变量在栈上分配,除非像其他地方一样使用了malloc
进行动态内存分配。 - simonc