如何避免“野指针”
以下是一些避免野指针(未初始化的指针)的常见建议:
- 初始化指针:在声明指针时,最好立即初始化它,使其指向一个已知的有效对象,或者如果暂时没有有效对象,就设置为
nullptr
。int* ptr = nullptr;
- 不要对未初始化的指针进行解引用操作:在你确定指针已经被正确初始化并指向一个有效对象之前,不要试图通过指针访问对象。
-
使用智能指针:C++11 引入了一些智能指针类型,如
std::unique_ptr
和std::shared_ptr
。这些类型在它们的生命周期结束时会自动释放所管理的资源,所以可以减少野指针和悬挂指针的风险。std::unique_ptr<int> ptr(new int(5));
- 在删除或释放指针后,立即将其设置为
nullptr
:这样可以防止不小心使用已经释放的指针。delete ptr; ptr = nullptr;
- 避免使用裸指针:在可能的情况下,尽量使用引用或智能指针代替裸指针。
通过遵循以上的建议,你可以大大减少在你的代码中遇到野指针的风险。