这样段代码对吗?
{
int *p = new int();
delete p; //只是释放了堆中的内存
int a = 10;
p = &a; //由于p在栈中,所以还可以赋值的
}
所以这段代码应该是对的吧
[解决办法]
可以的
[解决办法]
int *p = new int();//有些书上说这是为p分配内存,实际上这样的说法是不正确的,p是一个指针变量,它的内存是自动分配的,new int();一句的意思是从动态内存中构造一个int 类型的对象,并返回这个对象的指针,int *p = new int();是用返回的指针赋值给p.并不是为p而分配的内存.这里只是改变了p的值.
delete p; //只是释放了堆中的内存// 并析构了动态内存中的对象.这个操作不会对p有什么影响.