メモリの動的割り当てで少し遊んでいますが、ポイントがわかりません。ステートメントでメモリを割り当てるときnew
、ポインターが指しているメモリを使用して破棄できるはずですdelete
。
しかし、試してみると、delete
ポインターが指しているスペースが空になっていないように見えるため、このコマンドは機能していないようです。
例として、この本当に基本的なコードを見てみましょう。
#include <iostream>
using namespace std;
int main()
{
//I create a pointer-to-integer pTest, make it point to some new space,
// and fulfill this free space with a number;
int* pTest;
pTest = new int;
*(pTest) = 3;
cout << *(pTest) << endl;
// things are working well so far. Let's destroy this
// dynamically allocated space!
delete pTest;
//OK, now I guess the data pTest pointed to has been destroyed
cout << *(pTest) << endl; // Oh... Well, I was mistaking.
return 0;
}
どんな手掛かり ?