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是安全的,但不要对已经释放的内存块,因为会产生不确定的后果。

 

其他问题:

  指针的大小;

  指针的运算(加减除);

  

posted @ 2016-03-15 17:20  GregoRay  阅读(327)  评论(0编辑  收藏  举报