这是我正在学习的试卷中出现的一个问题。
“研究下面的代码。画一个图,描绘一个 32 位 Linux 进程地址空间的组织结构。在你的图中标注了大概的位置:a、b、c、*c(即 c 指向的内存)、malloc和主要”
int a; int b = 10;
int main()
{
char *c;
c = malloc(b);
return (0);
}
以上是我的看法,如有错误请指正。
a 是一个未初始化的全局变量,因此将被初始化为零并存储在 BSS 中。b 是一个已初始化的全局变量,因此将在数据段上进行。*c 是一个自动变量,因此将存储在堆栈中。c 是动态分配的,所以会放在堆上。Main 是执行代码,因此将存储在文本中。
我不确定 malloc 部分,它只是程序代码也会以文本形式出现,还是作为函数调用在堆栈上?