![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
effective C++
happylife1527
这个作者很懒,什么都没留下…
展开
-
effective C++ 条款 52:写了placement new也要写placement delete
http://www.cnblogs.com/lidan/archive/2012/02/19/2358706.htmlWidget* pw = new Widget;共有两个函数被调用:一个分配内存的operator new,一个Widget的default构造函数。假设第一个调用成功,第二个却抛出异常。步骤一所分配内存必须取消并恢复旧观,否则会造成内存泄漏。这时,客户没能力归还转载 2012-11-20 12:50:48 · 327 阅读 · 0 评论 -
effective C++ 条款 51:编写new和delete时需固守常规
http://www.cnblogs.com/lidan/archive/2012/02/19/2358524.html实现一致性operator new必须返回正确的值,内存不足时必须调用new_handling函数,必须有对付零内存的准备,还需要避免不慎掩盖正常形式的new。void* operator new(std::size_t size) throw(std::bad_al转载 2012-11-20 12:52:44 · 328 阅读 · 0 评论 -
effective C++ 条款 50:了解new和delete的合理替换时机
为什么有人想要替换operator new 和 operator delete呢?三个常见的理由:1.用来检测运用上的错误。如果将“new所的内存”delete却不幸失败,会导致内存泄漏。如果在“new所得内存”身上多次delete会导致不确定行为。如果new持有一串动态分配的所得地址,operator delete将地址从中移走,倒是很容易检测出上述错误用法。此外各式各样的编程错误可转载 2012-11-20 12:53:15 · 400 阅读 · 0 评论 -
effective C++ 条款 49:了解new-handler的行为
当operator new无法满足某一内存分配需求时,会抛出异常。再抛出异常以反映一个未获满足的内存需求之前,它会先调用客户指定的错误处理函数,new-handler。为了指定这个“用以处理内存不足”的函数,客户必须调用set-new-handler,那是声明于的一个标准函数库函数:namespace std{ typedef void (*new_handler)();转载 2012-11-20 12:53:41 · 352 阅读 · 0 评论 -
new,operate new和placement new
new:不能被重载,其行为总是一致的。先调用operator new分配内存,然后调用构造函数初始化那段内存。operator new:要实现不同的内存分配行为,应该重载operator new,而不是new。placement new:只是operator new重载的一个版本。它并不分配内存,只是返回指向已经分配好的某段内存的一个指针。因此在删除该对象时,需要调用对象的析构函数。转载 2012-11-20 13:00:00 · 417 阅读 · 0 评论