如果有多个(大于5)个100KB的内存空间,如果申请(new)一个500KB的怎么处理?

是直接返回申请失败吗? 如题,昨天面试遇到的。
还说new 和 malloc的区别,我说了下new会调用构造函数,然后问我怎么他们分配的区间都是连续的吗?
我说是的,但是好像不太满意,申请的内存空间不都是连续的吗

阅读 2.5k
1 个回答

1.不是返回失败,如果是有多个空间碎片大于申请空间的话,OS会进行倒腾,把空闲的空间块整合为一个大于申请的空间块,然后返回,当然没有的话,就是返回NULL了。
2.肯定是连续的,不然memcpy,memset怎么工作?数组下标怎么去访问呢?至少逻辑地址是连续的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题