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

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

null

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程序的内存布局 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享