您的位置:首页 > 数据库 > Oracle

甲骨文面试题目

2014-02-11 14:45 162 查看
下面的代码所分配的堆空间一样多吗?为什么?

void f1()

{

int* p = new int[100];

}

void f2()

{

int* p[100];

for(int i=0; i<100; i++)

p[i] = new int;

}

注意:

这个题目其实隐含的考察了栈空间和堆空间的概念,如果你的答案是不一样多,但是原因是因为一个只用了1个指针另一个用了

100个指针,那么你显然没机会了。当然可能只是当时粗心,但是,面试不是做慈善。

正确答案是不一样,因为其实每次申请堆空间的时候都会多出一个操作系统所用的“信息”空间,这些空间附带在你申请到的空间之前,用于标识

这个空间的大小等信息。因此,一次性申请100个空间那么,这个“信息”空间只有一个,而分开申请100次,那么就有了100个“信息”空间。

所以说,两种申请方法,你能用的堆空间一样多,但是真正从系统中消耗的空间是不同的,f2消耗的堆空间比较多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: