gpt4 book ai didi

c - C 中的变量存储在内存的什么位置?

转载 作者:行者123 更新时间:2023-11-30 16:15:56 25 4
gpt4 key购买 nike

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

我认为它们的分配如下:

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

我仅从 C 角度引用这些变量。

由于我是C语言新手,如果我错了,请纠正我。

最佳答案

您答对了其中一些问题,但无论是谁写了这些问题,至少在一个问题上欺骗了您:

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

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

关于c - C 中的变量存储在内存的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56910593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com