【发布时间】:2015-05-29 12:03:26
【问题描述】:
在 C 语言中,人们经常在使用 malloc 后检查空指针。但是,在 C++ 中,我们将使用“new”。我做了一些搜索,对 malloc 和 new 之间的区别的一种解释如下: https://isocpp.org/wiki/faq/freestore-mgmt#new-malloc-diff
引用以上链接:
malloc() 通过返回 0 报告内存耗尽。new 通过抛出异常 (bad_alloc) 报告分配和初始化错误。
但是操作系统(Linux 或 Windows)对这个 bad_alloc 异常有何反应?
【问题讨论】:
-
操作系统对这些事情没有反应。这就是这些事情的原因。操作系统拒绝内存分配尝试。寻找
VirtualAlloc、HeapAlloc、mmap和sbrk。 -
@ZanLynx:你为什么要在 comment 中回答?使用答案部分。
-
@LightnessRacesinOrbit:因为已经有了很好的答案,我只想回答问题的一部分。
-
@ZanLynx:Stack Overflow 的软件支持多个答案。
标签: c++ c memory-management