一些问题
1、指针在使用的时候要初始化,否则可能会是个野指针。不能依赖编译器给定初始化0,不靠谱。
2、删除指针要值空,否则会是个野指针。# 利用C++的删除 nullptr是合法的来更方便的操作。
char *p = nullptr;
delete p;
上述是合法的。操作
在QT中利用Q_NULLPTR来操作。使用以下宏来操作
#define set_NULL_PTR(p) ((p) = Q_NULLPTR)
#define is_NULL_PTR(p) (Q_NULLPTR == (p))
#define delete_PTR(p) do{ \
if(!is_NULL_PTR(p)) delete (p); \
(p) == Q_NULLPTR; \
}while(0)
参考
- delete指针以后应赋值为NULL——QT deletelater指针以后也同样要马上赋值为NULL