C++ 我们可以检查指针以确保它是有效地址吗?

C++ 我们可以检查指针以确保它是有效地址吗?,c++,pointers,memory-address,C++,Pointers,Memory Address,我的想法是打印它指向的对象。 我认为一个有效的指针应该有一个有效的对象。 如果我们试图打印出对象,我们将验证指针是否有效。 我说得对吗 我认为一个有效的指针应该有一个有效的对象 是的,这是有效指针的定义 如果我们试图打印出对象,我们将验证指针是否有效 不幸的是,你不能。您可以检查指针是否为空;但是如果它没有正确初始化,或者它指向一个被破坏的对象,那么它将既无效也无效 如果你想要一个足够聪明的指针来判断它是否有效,你就需要一个聪明的指针。看看陈雷蒙(Raymond Chen)有什么需要;尽管他特别

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

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

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

如果我们试图打印出对象,我们将验证指针是否有效

不幸的是,你不能。您可以检查指针是否为空;但是如果它没有正确初始化,或者它指向一个被破坏的对象,那么它将既无效也无效


如果你想要一个足够聪明的指针来判断它是否有效,你就需要一个聪明的指针。

看看陈雷蒙(Raymond Chen)有什么需要;尽管他特别提到了Windows,但一般来说,这应该适用于大多数操作系统。许多重复的可能重复:,,,,如果我试着打印出它所指的内容如何。如果它给出随机地址,它就不再是有效的指针。我就是这么想的。“这是对的吗?”贾菊申:我不知道你的意思。所有地址都是“随机”的,无论该地址是否存在有效对象。没有可靠的方法来判断指针是否指向有效的对象。您可能会检测到一些不代表可访问地址的无效指针;但是一个无效的指针可能很容易有一个可访问的地址——要么是偶然的,要么是因为它曾经指向一个已删除的对象。