小编典典

我的变量在 C 中存储在内存的哪个位置?

all

考虑到内存分为四个部分:数据、堆、堆栈和代码,全局变量、静态变量、常量数据类型、局部变量(在函数中定义和声明)、变量(在主函数中)、指针在哪里,并且动态分配的空间(使用
malloc 和 calloc)存储在内存中?

我认为他们将被分配如下:

  • 全局变量------->数据
  • 静态变量------->数据
  • 常量数据类型 -----> 代码
  • 局部变量(在函数中声明和定义)-------->栈
  • 在主函数中声明和定义的变量----->堆
  • 指针(例如 , char *arrint *arr-------> 堆
  • 动态分配的空间(使用 malloc 和 calloc)--------> 堆栈

我只是从 C 的角度来指代这些变量。

如果我错了,请纠正我,因为我是 C 新手。


阅读 69

收藏
2022-07-13

共1个答案

小编典典

你说对了其中一些,但是写这些问题的人至少在一个问题上欺骗了你:

  • 全局变量------->数据(正确)
  • 静态变量------->数据(正确)
  • 常量数据类型 -----> 代码和/或数据。当常量本身存储在数据段中并且对它的引用将嵌入代码中时,请考虑字符串文字
  • 局部变量(在函数中声明和定义)-------->堆栈(正确)
  • 在函数中声明和定义的变量main-----> 也堆栈(老师试图欺骗你)
  • 指针(ex: char *arr, int *arr) -------> 数据或堆栈,取决于上下文。C 允许您声明一个全局或static指针,在这种情况下,指针本身将在数据段中结束。
  • 动态分配空间(使用malloc, calloc, realloc) -------->

值得一提的是,“栈”被官方称为“自动存储类”。

2022-07-13