1、指针一般在创建的时候都应该初始化。除非你能保证要么你不会用到这个指针,要么在你使用之前它以及被被初始化了。如果不初始化,它就是野指针,在Debug模式下,VC++编译器会把未初始化的栈内存上的指针全部填成 0xcccccccc ,当字符串看就是 “烫烫烫烫……”,会把未初始化的堆内存上的指针全部填成 0xcdcdcdcd,当字符串看就是 “屯屯屯屯……”;在Release模式下,编译器则会将指针赋随机值,那么这个时候访问可就危险了。在使用Qt编写一个程序时,就在不经意间在未初始化之前就访问了,导致程序崩溃,找了半天才找出来,所以,一般还是置空吧。
2、指针赋初值应该赋什么值呢,以前一般都是0,或者NULL,但是NULL其实就是int 0的宏定义,存在二义性。所以C++11推出了
nullptr,它是有类型的,且仅可以被隐式转化为指针类型。所以现在初始化的时候一般就用它。
3、内存释放后,一定要立即对指针置空,赋值 nullptr。因为内存释放后,指针若没有被置空,那么它指向的地址很可能被其它地方所使用,这个时候访问也是非常危险的。