【发布时间】:2012-06-12 03:25:02
【问题描述】:
我有一个包含向量成员变量的类。 我知道存储在堆栈中的向量将是 当它们用完时清理(即释放内存) 范围,但我不确定是否破坏了 类对象 - 包含一个向量成员变量 - 被认为超出范围。
如果不是,那么合适的破坏方式是什么 向量?
EG:
class fred {
char *stuff;
vector<int> v;
fred() : stuff(), v() {}
~fred() {
if (stuff) free(stuff);
// now how do I clear up the vector v? Will it be done automatically?
}
}
【问题讨论】:
-
看看它是如何被标记为 C++ 的,你可能想要
new/delete而不是malloc/free。 -
矢量很好。但是
stuff不安全,因为有复制构造函数和赋值运算符(因为编译器会自动生成它们)。请参阅三的规则(或 C++11 中的五)。 -
在新的世界,C++11 领域,你不再自己打电话给
delete。您使用 unique_ptrs(通常)或 shared_ptrs(很少)为您调用它。
标签: c++ memory-management vector