【发布时间】:2012-08-07 13:37:26
【问题描述】:
这是我正在学习的试卷中出现的一个问题。
"研究下面的代码。画一个图来描述一个 32 位的组织结构 Linux 进程地址空间。在您的图表标签中,大致位置 of: a, b, c, *c(即c指向的内存),malloc和main”
int a; int b = 10;
int main()
{
char *c;
c = malloc(b);
return (0);
}
这是我的看法,如果我错了,请纠正我。
a 是一个未初始化的全局变量,因此将被初始化为零并存储在 BSS 中。 b 是一个已初始化的全局变量,因此将在数据段上进行。 *c 是一个自动变量,因此将存储在堆栈中。 c 是动态分配的,所以会放在堆上。 Main 是执行代码,因此将存储在文本中。
我不确定 malloc 部分,它只是程序代码也会以文本形式出现,还是作为函数调用在堆栈上?
【问题讨论】:
-
@H2CO3
a是一个全局可修改变量,没有分配特定的编译时值 - 它转到 bss,即用 0 初始化