📜  C |动态内存分配|问题8

📅  最后修改于: 2021-06-28 21:30:50             🧑  作者: Mango

考虑下面的程序,i,j和k在哪里存储在内存中?

int i;
int main()
{
    int j;
    int *k = (int *) malloc (sizeof(int));
}

(A) i,j和* k存储在堆栈段中
(B) i和j存储在堆栈段中。 * k存储在堆上。
(C) i存储在数据段的BSS部分中,j存储在堆栈段中。 * k存储在堆上。
(D) j存储在数据段的BSS部分中,i存储在堆栈段中。 * k存储在堆上。答案: (C)
说明: i是全局变量,并且尚未初始化,因此将其存储在数据段的BSS部分(http://en.wikipedia.org/wiki/.bss)

j在main()中是本地的,因此它存储在堆栈框架中(http://en.wikipedia.org/wiki/Call_stack)

* k是动态分配的,因此将其存储在堆段中。

有关更多详细信息,请参见以下文章。

C程序的内存布局
这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。