通过考虑将内存分为四个部分:数据,堆,堆栈和代码,全局变量,静态变量,常量数据类型,局部变量(在函数中定义和声明),变量(在main函数中),指针,并动态分配空间(使用malloc和calloc)存储在内存中?
我认为他们将分配如下:
char *arr,int *arr)------->堆我只是从C的角度来指这些变量.
如果我错了,请纠正我,因为我是C的新手.
在关于 " 关于Unix中的bss段和数据段 "的问题的答案之一中,我看到对bss的解释如下:
Bss是特殊的:.bss对象不占用目标文件中的任何空间,并且通过将未特别初始化的所有符号分组在一起,可以很容易地将它们一次归零.
但是当我在目标文件上使用size时,会生成代码:
#include <stdio.h>
int uninit_global_var;
int init_global_var=5;
int main()
{
int local_var;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我有以下内容
text data bss dec hex filename
1231 280 12 1523 5f3 a.out
Run Code Online (Sandbox Code Playgroud)
并根据具有全局范围的未初始化数据成员查看bss的增长情况.那么有人可以证明上述陈述的合理性吗?