变量将被删除。

记住,就像正常的变量,当创建一个指针,它的值是未定义的。因此,这是一个好主意来设置所有指针不马上使用0:
1
2
int *pnValue = new int;
int *pnOtherValue = 0; // will allocate later
同样,当一个动态分配的变量删除,指针指向它不是零。考虑下面的代码片段:
1
2
3
4
5
int *pnValue = new int;
delete pnValue; // pnValue not set to 0
 
if (pnValue)
    *pnValue = 5; // will cause a crash
因为pnValue没有被设置为0,if语句条件的求值结果为true,和程序试图分配5分配内存。这几乎不可避免地会导致程序崩溃。这从来就不是一个好主意离开一个指针指向分配内存。释放内存时,设置的指针分配之后立即为0。这有助于确保程序不试着访问内存已经被收回。上面的程序应该写成:
1
2
3
4
5
6
7
int *pnValue = new int;
*pnValue = 7;
delete pnValue;
pnValue = 0;
 
if (pnValue)
    *pnValue = 5;

分配的习惯你的指针设置为0时,他们都宣称(除非指定到另一个地址),和后删除。它可以节省很多的悲伤。

最后,删除一个空指针没有影响。因此,不需要以下几点:

1
2
if (pnValue)
    delete pnValue;

如果非空pnValue,动态分配的变量将被删除。如果它是空的,什么都不会发生。

1
delete pnValue;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值