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

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

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

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

上一篇:10G个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可


下一篇:联通一直不公布5G用户数,太少以致于不好意思公布?