【发布时间】:2012-05-14 19:21:28
【问题描述】:
指向在 C++ 中以其他方式分配的东西的指针是否相当安全?
到目前为止,我一直在使用 STL 容器(在一种情况下是一个数组,但这是另一个问题)来满足我所有的动态内存需求,因此我不需要显式使用 new 关键字.我也一直在愉快地使用普通的 ol'int *foo 类型指针来引用事物。现在我正在阅读有关智能指针的文章(我在 Java 上切过牙,所以我以前从来不用担心这个),传统观点似乎是“裸指针不好,不要使用它们。”
那么我遇到了多大的麻烦?我可以安全地继续使用裸指针,只要它们指向的东西有其他破坏条件吗?这是我可以逃避但将来应该避免的事情吗?还是我应该匆忙修复它是一场灾难?
【问题讨论】:
-
您应该阅读异常安全、RAII 并查看 C++11 中的两个新智能指针(并且已经在 Boost 中使用了一段时间):
std::shared_ptr<T>和std::unique_ptr<T>.还有很多其他类似的问题,比如:stackoverflow.com/questions/6675651/…。尤其是异常安全,以及在抛出异常和展开堆栈时如何防止相关问题(如内存泄漏)是值得注意的。
标签: c++ pointers smart-pointers