关于C++中指针变量new完再delete之后该指针变量的问题
使用new来分配内存
示例:int * p = new int;
new int告诉程序,需要适合存储int的内存。new运算符根据类型来确定需要多少字节的内存,然后它找到这样的内存,并返回其地址。接下来地址付给p,p是被声明为指向int的指针。现在,p是地址,而*p是存储在那里的值。该new int的内存是存储在堆区上。
使用delete释放内存
示例:int * p = new int;
…
delete p;
这将释放p指向的内存,但不会删除指针p本身,还可以将p重新指向另一个新分配的内存块。
结合例子理解
示例代码:
#include <iostream>
using namespace std;
int main()
{
int a = 100;
int* ps = new int;
cout << ps << endl;
delete ps;
ps = new int;
*ps = 1000;
cout << *ps << endl;
cout << ps << endl;
ps = &a;
cout << *ps << endl;
cout << ps;
system("pause");
return 0;
}
运行结果:
016BC560
1000
016BC560
100
0135FAD4请按任意键继续. . .