【发布时间】:2012-05-21 13:56:04
【问题描述】:
我正在使用 tr1 shared_ptr(工作尚未更新到 C++0x 或 C++11),我需要 将 std::tr1::shared_ptr 与具有自定义分配器和删除器的类 Foo 一起使用。
目前 Foo 由以下代码分配/释放:
void createFoo(Foo** mem) {
*mem = (Foo *) malloc(sizeof(Foo));
memset(*mem, 0, sizeof(Foo));
}
和
void deleteFoo(Foo* mem) {
// code to call recursive methods to delete Foo substructures
memset(...)
}
如何使用 createFoo 和 deleteFoo 声明 std::tr1::shared_ptr<Foo>?
【问题讨论】:
-
为什么
createFoo不直接返回malloc的值,而不是通过指向指针的指针? -
在 C++ 中这样做有什么理由吗?您是否考虑过重载运算符
new和delete? -
deleteFoo没有释放任何内存! … -
@Konrad:我省略了实际释放内存的代码:评论中提到了。
-
@SethCarnegie:没有特别的原因 - 这就是我找到代码的方式。
标签: c++ memory-management constructor shared-ptr