重複の可能性:
void ポインターを削除しても安全ですか?
new
呼び出されたクラスへの割り当てMyClass
があり、割り当ては次のように簡単だとします。
MyClass *myClassPtr = new MyClass();
void*
そして、私が単に言う場所のリストへの参照を保存します
myListOfPointers.add(static_cast<void*>(myClassPtr)); // this has to be void*
そして後で私はメモリを解放するので、代わりに:
delete myClassPtr
私が使う:
delete MyListOfPointer.get(0)
(myClassPtr 参照がゼロ インデックスにあるとします。) また、void*
このリストにはさまざまな種類のポインターを格納できるため、削除するポインターの種類がわからないため、そうする必要があることに注意してください。
だから私は次のようなことはできません:
delete static_cast<MyClass*>(MyListOfPointer.get(0))
この方法で正しいメモリサイズを解放できますか? ( sizeof(MyClass)
)?
注:
スマートポインターを指す答えは探していません。