考虑下面的程序,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基础课程》。