【初心者歓迎】C/C++室 Ver.9【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0695デフォルトの名無しさん
NGNG構築されたデータは適切に解体されなければならない。
たとえばそのvectorに次のようなクラスを入れることを考える。
struct test
{
test() :p(new int){}
~test(){delete p;}
private:
int *p;
};
testのインスタンスが構築されるだけで解体されないとメモリリークが起こる。
一般に、クラスは正しく解体されることを前提として設計されているから、
コンテナを書くときは要素を破棄しないといけない。
>というより、メモリを解放してもデータ要素は残るものなのでしょうか?
std::allocator<test> alloc;
test *g = alloc.allocate();
alloc.construct(p);
alloc.deallocate(p);
*gのデストラクタが呼ばれないから、このコードはメモリリークを起こす。
■ このスレッドは過去ログ倉庫に格納されています