【问题标题】:Can we check a pointer to make sure it is a valid address?我们可以检查一个指针以确保它是一个有效的地址吗?
【发布时间】:2013-12-04 18:46:12
【问题描述】:

我的想法是打印它指向的对象。 我认为一个有效的指针应该有一个有效的对象。 如果我们尝试打印出对象,我们会验证指针是否有效。 我说的对吗?

【问题讨论】:

标签: c++ pointers memory-address


【解决方案1】:

我认为一个有效的指针应该有一个有效的对象。

是的,这就是有效指针的定义。

如果我们尝试打印出对象,我们会验证指针是否有效。

很遗憾,你不能。可以检查指针是否为空;但如果它没有正确初始化,或者如果它指向一个已被销毁的对象,它将既不有效也不为空。

如果你想要一个足够智能的指针来知道它是否有效,你需要一个智能指针。

【讨论】:

  • 如果我尝试打印出它所指向的内容怎么样。如果它给出随机地址,它就不再是一个有效的指针。和我想的一样。对吗?
  • @JiajuShen:我不明白你的意思。所有地址都是“随机的”,无论该地址是否存在有效对象。没有可靠的方法来判断指针是否指向有效对象。您也许可以检测到 一些 不代表可访问地址的无效指针;但是一个无效的指针很容易有一个可访问的地址——要么是偶然的,要么是因为它曾经指向一个已删除的对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多