当我注意到不应该发生的事情时,我一直在插手,使用 Intel Inspector 测试内存泄漏。我从不应具有虚拟析构函数的 std::vector 继承,派生类中有一个额外的成员,我对其进行动态内存分配,在 main 中我在堆上创建派生类,强制转换为基类,调用delete...并没有检测到内存泄漏???按照所有逻辑,我应该得到内存泄漏。
template <typename T>
class DynamicArray : public std::vector<T> {
public:
DynamicArray() : children(nullptr) {
children = new int(50);
}
~DynamicArray() {
if (children) delete children;
}
DynamicArray& operator<<(const T& value)
{
push_back(value);
return *this;
}
private:
int *children;
};
int main() {
DynamicArray<int> *pArray = new DynamicArray<int>;
(*pArray) << 4 << 5;
static_cast<std::vector<int>*>(pArray);
delete pArray;
}