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是安全的,但不要对已经释放的内存块,因为会产生不确定的后果。
其他问题:
指针的大小;
指针的运算(加减除);