Строка "hey"
имеет пространство, предварительно выделенное как часть программы, поэтому она появляется только при запуске программы и исчезает при ее завершении.
Если вы хотите увидеть программу, которая выделяет память, использует ее, затем удаляет, а затем посмотрите на это:
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
const char *hey="hey";
char* tmp=new char[4]; // NB allocate 4 chars for "hey" plus a null terminator
strcpy(tmp,hey); // copies the string and null terminator
cout << tmp << endl;
delete [] tmp;
// must not use tmp now as it points to deallocated memory
// must not delete hey
return 0;
}
Обратите внимание, как мне удалось удалить new
память, используя tmp
. Я мог бы сделать это:
cout << tmp << endl;
hey = tmp;
delete [] hey;
Неважно, в конце концов, мы указываем на new
'd память с hey
или tmp
, лишь бы мы удаляли ее правильно, чтобы избежать утечек памяти.