【发布时间】:2012-12-14 10:28:28
【问题描述】:
我注意到在 QT 中用 shared_ptr 替换原始指针时,我的代码不再工作了。 例如,如果不是
QTreeWidgetItem* vItem(new QTreeWidgetItem(ItemTitle));
我用
std::shared_ptr<QTreeWidgetItem> vItem(new QTreeWidgetItem(ItemTitle));
然后,要么程序崩溃,要么什么都不做(即使我使用 .get() 函数来获取 稍后在我的代码中来自共享指针的原始指针)。有人知道可能是什么原因吗?
【问题讨论】:
-
你为什么首先使用带有 Qt 模型项的智能指针?你可能不应该那样做。
-
我不确定原始指针是否会导致内存泄漏...
-
这始终是一个有效的担忧,但解决方案不是添加随机“修复”,而是了解对象的生命周期和所有权状态。但是,是的,知道什么是正确的事情并不总是那么容易,尤其是在 C++ 中使用某些框架时......
标签: c++ qt c++11 shared-ptr