码迷,mamicode.com
首页 > 其他好文 > 详细

在一台内存为2G的机器上,malloc(20G) 会怎样?如果是new(20G) 会怎样?

时间:2019-12-01 13:55:10      阅读:466      评论:0      收藏:0      [点我收藏+]

标签:exp   虚拟   container   expand   data   底层实现   span   item   申请   

  • 首先,malloc和new申请的都是虚拟内存

  • malloc函数的实质,有一个将可用的内存块连接起来的链表,调用malloc的时候,会沿着链表找一个满足用户需求的内存块。然后将这个内存块一分为二,一块和用户所申请的内存大小相同,另一块返回到链表中。如果用户申请一个大的内存块,空闲链表上可能没有可以满足用户要求的片段,这个时候malloc函数就会请求延时,对链表上的内存进行整理。如果还是不可以的话, 内存申请失败,返回NULL

  • new的话,底层实现还是malloc,在分配失败的时候会抛出bad_alloc类型的异常

在一台内存为2G的机器上,malloc(20G) 会怎样?如果是new(20G) 会怎样?

标签:exp   虚拟   container   expand   data   底层实现   span   item   申请   

原文地址:https://www.cnblogs.com/letlifestop/p/11965473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!