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

Posted letlifestop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在一台内存为2G的机器上,malloc(20G) 会怎样?如果是new(20G) 会怎样?相关的知识,希望对你有一定的参考价值。

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

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

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

以上是关于在一台内存为2G的机器上,malloc(20G) 会怎样?如果是new(20G) 会怎样?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的一台电脑原装2G后加装8G内存速度和没有加8G内存速度差不多?鲁大师评测只打败7%的电脑

如何在一台机器上配置多个RabbitMQ

仅在一台机器上出现 HTML 对齐问题(均为 IE8)

为啥 Spring 在一台机器上而不是另一台机器上出现循环依赖问题?

在一台机器上出现 DacServices 错误,而不是在另一台机器上

为啥我的 Perl 程序在一台机器上得到污染警告,而在另一台机器上却没有?