在C++中,以其他方式分配的事物的指针是否合理安全?
到目前为止,我一直在使用STL容器(在一种情况下为数组,但这是另一个问题)来满足我所有的动态内存需求,因此不需要显式使用new
关键字。我也一直在使用普通的ol'int *foo
类型指针来引用事物。现在,我正在阅读有关智能指针的信息(我在Java上专心致志,因此以前从未担心过这一点),传统的观点似乎是“裸指针不好,不要使用它们”。
那我有多少麻烦?只要它们指向的对象具有其他破坏条件,我是否可以安全地继续使用裸指针?这是我可以避免的事,但将来应该避免吗?还是我应该在事后修正一下,这对我来说是一场灾难吗?
最佳答案
裸指针本身是安全的,使用不正确是很危险的(很容易被带走)。智能指针很漂亮,但是所有智能指针(shared_ptr
)都涉及引用计数,这会导致性能下降。您应该尝试在适当的地方使用智能指针,但是使用指针的AFAIK不会被认为是一个可怕的错误。
引用STL容器的成员时,请务必小心,因为它们的地址在重定位过程中可能会更改,从而给您带来奇怪的错误。