缓慢甚至崩溃

1
2
3
4
void doSomething()
{
    int *pnValue = new int;
}

此函数分配一个整数动态,但从来没有让它使用删除。因为指针遵循正态变量,函数结束时,pnvalue将超出范围。因为pnvalue是唯一的变量的动态分配的整数地址,当pnvalue破坏没有指向动态分配的内存。这就是所谓的内存泄漏。作为一个结果,动态分配的整数不能删除,从而不能被重新分配或重新。内存泄漏吃免费的内存运行程序时,使更少的内存不仅可以对这一计划,但其他的程序以及。严重的内存泄漏问题的方案,可以吃所有可用的内存,导致整个机器运行缓慢甚至崩溃。

内存泄漏也如果指针的动态分配的内存地址重新分配到另一个值的结果:

1
2
3
int nValue = 5;
int *pnValue = new int;
pnValue = &nValue; // old address lost, memory leak results

1
2
int *pnValue = new int;
pnValue = new int; // old address lost, memory leak results

返回的地址从第二配置覆盖第一分配地址。因此,第一分配成为一个内存泄漏!

空指针(第二部分)

空指针(指针设置为解决0)特别有用,在处理动态内存分配。一个空指针说“没有记忆已分配但”。这允许我们做的事情一样,有条件的分配内存:

1
2
3
// If pnValue isn't already allocated, allocate it
if (!pnValue)
    pnValue = new int;


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值