甲骨文面试题目
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消耗的堆空间比较多
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消耗的堆空间比较多
相关文章推荐
- 甲骨文面试题目
- [置顶] Android开发之数组类的面试题目,android工程师java程序员必备
- 小米金融初轮技术面试题目
- C/C++ 笔试、面试题目大汇总
- Java面试题目系列四
- 几个fork面试题目的验证
- J2SE基础常见面试题目
- 20180207-甲骨文(Oracle面试)Java 开发(5)
- 后台开发面试题目整理——C++篇
- c/c++笔试面试题目大全
- 面试题目
- 经典嵌入式面试题目
- C/C++ 笔试、面试题目大汇总
- 面试的javascript题目
- C/C++ 笔试、面试题目大汇总(一)
- 2017最新PHP经典面试题目汇总(上篇)
- SQL面试题目
- 面试题目
- 面试10大算法汇总+常见题目解答
- 接着写某狼厂面试题目经验2015