首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这样段代码对吗?该怎么处理

2012-03-09 
这样段代码对吗?{int *p new int()delete p//只是释放了堆中的内存int a 10p &a//由于p在栈中,

这样段代码对吗?
{
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有什么影响.


热点排行