Estoy jugando un poco con la asignación dinámica de memoria, pero no entiendo nada. Al asignar algo de memoria con la instrucción new
, se supone que puedo destruir la memoria a la que apunta el puntero usando delete
.¿Por qué no eliminar destruir algo?
Pero cuando intento, este comando delete
no parece funcionar ya que el espacio al que apunta el puntero no parece haberse vaciado.
Tomemos esta pieza realmente básico de código como un ejemplo:
#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;
}
Alguna pista?
Sí, un quieston novato, pero no tan trivial. – sharptooth