1)内存申请,申请完成后,一定要检查是否申请成功。
char *p = NULL;
p = (Type*) malloc(sizeof(Type) * length);
if(NULL == p) return;
2) 内存释放,释放完成后,一定要将指针置为 NULL
if(NULL != p)
{
free(p);
p = NULL;
}
3) 杜绝"野指针"
定义是要赋初始值NULL,释放后要置为NULL,同时,注意指针的使用范围(程序域/文件域/函数域/代码块域)
4)用new/delete来进行动态对象的内存管理,因为在用new创建对象时,会调用对象的构造函数;在用delete释放对象时,会调用对象的析构函数。而malloc/free则不能执行对象的构造和析构函数。
5)malloc/free
a.malloc 原型: void * malloc(size_t size);
int *p = (int *) malloc(sizeof(int) * length);
在使用的时候,要注意用sizeof来计算要申请的空间大小。
b.free原型:void free( void * memblock );
free(p);
p=NULL; //###这个很重要
6) new/delete
a. int *p2 = new int[length]; //动态申请int型数组
用new动态申请对象,可以使用无参构造函数,也可以使用有参构造函数。
A *pa = new A; 或 A *pa = new A(20);
b. 释放动态对象: delete pa;
释放动态数组: delete []pa;
7) 申请指针后,要初始化。初始化时,要注意申请空间的大小,谨防多1少1的问题。使用指针时,要注意空指针和无效指针。使用完成后,要释放指针,同时将指针置为NULL。记住谁申请,谁使用,谁释放。