【发布时间】:2012-03-02 15:46:55
【问题描述】:
在一个项目中,我有两种类:
- A 类:我用
std::unique_ptr<>管理的通常分配的类 - B 类:新类已被覆盖以从boost memory pool 分配内存
对于后者,正确的用法是像往常一样调用 new 来分配一个新实例,但永远不要调用 delete。 当内存池对象用完时,这些对象会被清理范围。
因此,如果我不小心将 B 类实例存储在 std::unique_ptr<> 中,我会遇到分段错误。同样,在 B 类指针上显式调用 delete 也是一个坏主意。
我应该使用什么样的 C++ 机制来防止这些类型的错误发生?
作为一个简单但丑陋的解决方案,我正在考虑将我的所有 B 类类重命名为具有类似 MP 的前缀(用于内存池),所以我直观地知道 不是 将它们填充到里面一个 std::unique_ptr.
但是,最好有一种语言机制可以在编译期间发现问题,或者如果我或我的团队的其他成员不小心犯了这些类型的错误,至少会以更明显的方式死掉。
【问题讨论】:
标签: c++ memory-management boost c++11