甲骨文面试题目

下面的代码所分配的堆空间一样多吗?为什么?

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消耗的堆空间比较多。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值