繁体   English   中英

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

[英]Can we check a pointer to make sure it is a valid address?

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

我认为有效的指针应具有有效的对象。

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

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

不幸的是,你不能。 您可以检查指针是否为空; 但是,如果未正确初始化它,或者如果它指向已被破坏的对象,则它既无效也不为null。

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

您的代码应该聪明地跟踪指针,并避免使用未分配或未初始化的指针。 有效性或无效性是代码中的相对概念。 尝试使用智能指针。

对于裸指针,如果您不知道将来是否会初始化指针,则可以通过null初始化它们。 然后,在使用指针之前,您可以检查它是否为null。

但这还不够,格式错误的代码可能具有无效的指针,并且其程序员会发现它们很困难。 例如,考虑返回指向本地临时对象的指针,该指针将在退出函数后销毁。 因此,您应该在代码中对其进行管理。

首先尝试避免指针。 如果需要它们,请使用智能指针。 如果必须使用裸指针,请编写格式正确的代码并通过正确使用分配/取消分配和空值来跟踪指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM