如果从未使用悬挂指针危险吗?

Xy *_*Luo 3 c dangling-pointer

我们已经知道免费使用后漏洞可能会导致安全问题.由于免费使用后错误是由悬空指针产生的,我的问题是如果悬挂指针没有在程序中使用,它们被认为是安全的还是良性的(不是那么危险)?

joh*_*n d 6

未使用的悬空指针并不危险...直到下一个开发人员使用它.您将问题标记为C和C++; 我会认为你使用的是C++,而不是C.对于C++,避免使用含有模糊语义的原始指针和悬空倾向.使用unique_ptrshared_ptr可以帮助你很多.

无论如何,避免悬挂指针.设置删除的指针几乎没有任何成本nullptr,它可以节省大量的开发/调试时间.

如果你遇到悬挂指针的问题,或者至少是与它们相关的问题,你可能有机会应用漂亮rule of zero:你的班级管理内存(你正在写一个容器,一个特定的酷炫指针包装器或类似的),或者您正在编写一个不应该拥有任何原始指针的非管理类.

  • @Stargatter:'愚蠢'有点夸张,而且我没有暗示.此外,如果你到处都有指针,你的设计是有缺陷的.NULL解决方案不是愚蠢的,它只是一个解决方案.真正的解决方案是更清洁的设计和适当的内存管理. (5认同)
  • 一个dandling指针可以来自各种情况.两个指针可以包含相同的值,当你释放并将其设置为NULL时,你仍然会有这个第二个指针正在进行处理.设置为NULL只是一个愚蠢的解决方案. (2认同)