删除ptr后,是否cout << ptr打印 的地址int(6)?
如果是的话,为什么会出现乱码呢?我记得是delete只释放指定空间的数据吧?
还有我想问delete这里释放空间数据的时候,是只释放6还是连int类型都释放?
int* ptr = new int(6);
cout << "Address of the space pointed to by ptr: " << ptr << endl;
cout <<"the value of the space pointed to by ptr: "<< *ptr << endl;
delete ptr;
cout << ptr << endl;
Run Code Online (Sandbox Code Playgroud)
int* ptr = new int(6);保留一些将指向的内存ptr,该内存适合存储一个int或6任何其他内存,它不能用于执行其他任何操作,您可以可靠地将数据存储在那里并稍后访问它。
之后,delete您告诉系统内存可用,程序可以将其用于任何它想要的用途。ptr可能仍然指向相同的地址(指针的值)并且您仍然可以打印它,但是该内存不再属于ptr,通过它访问该内存(例如:取消引用指针)相当于未定义的行为。
指针的值(即它指向的地址)通常保持不变,直到您自己更改为止。
一种常见的做法是分配nullptr一个不指向任何有效内存位置的指针,这样您就可以轻松检查它是否可以取消引用。