1.指针
1.1不要使用局部变量的地址作为函数返回值
错误代码
Func2()返回了局部变量数组的地址,结果并没有输出hello
1.2 malloc,free,new,delete
申请与释放必须成对使用
下面的代码没有使用free释放
动态数组的释放必须加括号
释放动态数组时,使用delete[ ] arr;即在数组名前加上一个中括弧;例如
delete [ ] arr;
释放一个动态数组时,或者说是指向数组的指针时,中括号是必须的。它告诉编译器,指针指向一个数组的第一个元素。
delete释放数组是逆序进行的,最后一个元素被最先释放,第一个元素最后一个被释放。
1.3 指针必须初始化
不正确的初始化,赋值为NULL后直接调用字符串拷贝函数,造成崩溃。
1.4 指针释放后必须置空
某一行释放了指针,释放后ptr不为NULL:
delete ptr;
过了几十行代码,又作如下判断
if(NULL != ptr)
{
delete ptr;
}
造成崩溃