我使用shared_ptr作为Objective-C类中的实例变量。所以我想知道内存管理是否正确。
@interface MyClass () {
@private
std::shared_ptr<vector<pair<pair<float, float>, pair<float, float>>>> _periods; // In real code I use typedefs
}
这个班级的对象过着漫长而幸福的生活。但我必须经常覆盖_periods
。
首先,我在_periods
中使用辅助函数创建初始init
,如下所示。
shared_ptr<vector<pair<pair<float, float>, pair<float, float>>>> periodsScaled(...)
{
auto periods = std::make_shared<RALG::periods>();
// ... fill pairs of points
return periods;
}
然后在MyClass
中我有generatePeriods
函数覆盖实例变量。
- (void)generatePeriods
{
_periods.reset(); // Should I really use reset here to delete existing periods?
_periods = periods(...);
}
我还有-dealloc
实施
- (void)dealloc;
{
_periods.reset(); // Should I reset shared pointer in dealloc?
// other class-specific routines
}
我的代码在shared_ptr内存管理方面是否正确?我是C ++的新手