摘要: “placement new” 通常是专指指定了位置的 new(std::size_t size, void mem),用于 vector 申请 capacity 剩余的可用内存。 但广义的 ”placement new” 指的是拥有额外参数的 operator new。 new 和 delete 阅读全文
posted @ 2020-02-29 12:06 刘-皇叔 阅读(133) 评论(0) 推荐(0) 编辑
摘要: new 和delete 必须遵循的惯例 operator new 需要无限循环地获取资源,如果没能获取则调用 ”new handler”,不存在 ”new handler” 时应该抛出异常。 operator new 应该处理 size == 0 的情况。 operator delete 应该兼容空 阅读全文
posted @ 2020-02-29 11:57 刘-皇叔 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 为什么需要自定义 operator new 或 operator delete 检测使用错误。new 得到的内存如果没有 delete 会导致内存泄露,而多次 delete 又会引发未定义行为。如果自定义 operator new 来保存动态内存的地址列表,在 delete 中判断内存是否完整,便可 阅读全文
posted @ 2020-02-29 11:36 刘-皇叔 阅读(170) 评论(0) 推荐(0) 编辑