あるべきではないことに気づいたとき、私はIntel Inspectorでメモリリークをテストして、いじくり回してきました。仮想デストラクタを持たないstd::vectorから継承し、派生クラスに追加のメンバーがあり、動的メモリ割り当てを行います。主に、ヒープ上に派生クラスを作成し、基本クラスにキャストします。 、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;
}