指针的使用

在C++中使用关键字new来分配自由存储区中的内存。在new后面跟上要为其分配内存的对象的类型,让编译器知道需要多少内存。因此new int 在自由存储区中分配4字节内存。

new的返回值是一个内存地址。而内存地址应存到指针中,因此应将new的返回值付给一个指针。要在自由存储区中创建一个int变量,可以这样做:

当然,可以在声明指针的同事对其进行初始化,从而在一行代码中完成上述工作:

int *pPointer = new int;

无论采用哪种方式,pPointer都将指向自由存储区中的一个int。可以像使用其他指向变量的指针那样使用它,将一个值赋给它指向的内存区域:

*pPonter = 72;

 

Delete 将内存归还给自由存储区。

请切记,使用new分配的内存不会被自动释放。如果指针变量指向自由存储区中的内存块,离开该指针的作用域时,该内存块不会归还给自由存储区。相反,该内存块被视为已分配出去,同事由于该指针不再可用,你将无法访问该内存块。当指针为局部变量时将发生这样的情况。当函数返回时,在该函数中声明的指针将不在作用域中,从而丢失。使用new分配的内存不会被释放,而是变得不可用。

这被称为内存泄漏,因为在程序结束前,该内存块再也无法使用,就像从计算机中泄漏了一样。

为防止内存泄漏,应将分配的内存归还给自由存储区。为此可以是用关键字delete。例如:

delete pPointer;

注意:删除指针时,实际上是释放了其地址存储在指针中的内存。这相当于说:将该指针指向的内存归还给自由存储区。该指针仍然存在,可以重新给它赋值。

示例:

输出:

localVariable: 5

*pLocal: 5

*pHeap: 7

*pHeap: 9


 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值