在内存中这些变量存储在c?

时间:2017-12-24 10:59:46

标签: c memory-management ram rom

如果我有这样的代码:

const int a=2;
int b;
int main()
{
const int c=4
static int d;
int e;
int f=5;
}

在内存(堆栈,数据,堆)中存储这些变量的位置(尤其是本地未定义变量e)? 未定义的局部变量e将具有垃圾值(它来自哪里?)

1 个答案:

答案 0 :(得分:2)

  • 全局变量------->数据
  • 静态变量------->数据
  • 常数数据类型----->代码和/或数据。考虑字符串文字,表示当一个常量本身存储在数据段中,并且对它的引用将嵌入到代码中
  • 局部变量(在函数中声明和定义)-------->堆栈
  • main函数中声明和定义的变量----->堆栈
  • 指针(例如:char *arrint *arr)------->数据或堆栈,具体取决于上下文。 C允许您声明全局或static指针,在这种情况下,指针本身将最终出现在数据段中。
  • 动态分配空间(使用malloccallocrealloc)-------->堆

值得一提的是,“堆栈”被正式称为“自动存储类”。