C++指针与内存泄露

基本知识:

指针是一个变量,存储某个变量的地址(例:0x00aabbcc);

*运算为间接值(indirect)运算符,或解除引用(dereferencing)运算符;

 

指针初始化:

  使用指针(*运算符取值)之前,必须先初始化指针(让指针指向一个变量)。

  创建指针时,计算机会分配内存来存储变量的地址,但不会分配内存来存储变量的值。

  int * pTemp; // 空指针,未赋值 *pTemp指向未知位置

  *pTemp = ImmediateValue; // 会发生未知错误

  指针赋值:

    pTemp = &variable;  // 指针指向一个变量

    pTemp = 0x00aabbcc;  // 指针指向一个地址

    typeName * pointer_name = new typeName;  // 

                             // int * pTemp = new int;

    其中第一种(常规变量)和第二种赋值分配在栈(stack)中,第三种(new运算符)分配在堆(heap)中

  

清理内存:

  new和delete应该成对出现,由new申请的内存必须由delete释放,否则将会发生内存泄漏(memory leak),被分配的内存无法再被使用。

  内存泄露产生原因:没有释放(在堆中申请的)内存。

  对空指针使用delete是安全的,但不要对已经释放的内存块,因为会产生不确定的后果。

 

其他问题:

  指针的大小;

  指针的运算(加减除);

  

转载于:https://www.cnblogs.com/GregoRay/p/5280292.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值