假设我的目的是编写一个分配器,这个分配器将作为我的练习;我注意到 libstdc++
在 std::allocator
内部使用 new
(或 libstdc++ 内部的等效类,分配实际内存,以老实说,我期待 alloc
系列的功能。
new
和*alloc
函数族都返回一个void *
,它们也分配内存,但是从设计的角度来看看到有一个比另一个闪耀吗?如果此运算符胜过 alloc
,您能否提供一个编写良好的 new
的示例,或有关 new
的良好指南?
我的新代码库针对的是不早于 C++11 的任何东西,以防您需要有关语言规范的引用框架。
附言
with new
我显然指的是全局命名空间中的 new
。
最佳答案
有两个主要区别。首先是 malloc
和公司
如果没有更多内存,则返回空指针,因此您必须检查一下,
如果返回空指针,则抛出 std::bad_alloc
; operator new
函数让你摆脱这个,因为它会抛出 std::bad_alloc
如果它不能
分配内存。二是用户可以替换运算符
新的
/operator delete
函数;这通常在调试构建中完成
跟踪内存泄漏和悬挂指针。 (在实践中,你可能会做
这与 malloc
一样,但正式地,这样做是未定义的行为。)
关于c++ - 在分配器中使用 new 和 *alloc 函数时有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26823403/