太久没去blog.com更新文章,导致他们要删掉我的blog,无奈只好把我之前收集的其他的文章搬到这里。先声明,这些文章都是网络上的资料,出处我已经忘记了,不好意思。
1 管理好自己的指针,在函数作用域内消失时让其消失,或者将其引用给其他外部指针。
2 函数参数在执行时,编译器会在栈上使用临时变量 _p,退出操作时使_p = p,所以只是值传递时,只能使某临时变量值等于某值,而不是在原变量上发生变化,一次类推,指针作为参数,以值传递进行时,就是没有引用地址,那么栈上使用栈临时指针,指向堆上的地址,当其值改变时,所指向的值也会发生变化,但是不能改变内寻地址。
3 delete 与NULL同时存在
4 不要忽略指针的生命周期。野指针的产生有两种可能,指针未初始化,未先判断指针是否为NULL,未控制声明周期,比如:
class A{
public:void fun(){}
};
A* test(){
A aa;
A *a = NULL;
a = &aa;//aa生命期过期
return a;
}
void main()
{
test()->fun();
}
但是这个在编译器是可以执行的。