我正在学习 C++,我发现指针如果未初始化可能会指向内存中的随机位置,并产生内存可能被其他程序使用的问题。
现在,如果是这种情况,我们就不应该在代码的任何部分包含这一行:
int* ptr;
相反,我们应该有类似的东西
int* ptr = NULL; //Is this going to avoid the problem
请建议,因为我已经看过第一行(int* ptr;
)在很多书中,所以我有这个疑问。如果可能的话还举一些例子。
int* ptr = NULL; //Is this going to avoid the problem
这会导致ptr
指向NULL
您可以明确检查它作为默认/未初始化值。它可以防止您描述的问题,但粗心的程序员仍然可能在不检查的情况下意外取消引用空指针,从而导致未定义的行为。
主要优点是方便您检查是否ptr
已经或尚未初始化为任何内容,即:
if (ptr != NULL)
{
// assume it points to something
}
由于这是非常惯用的,因此不初始化指向的指针非常危险NULL
。该指针将被初始化为一个非 NULL 垃圾值,该值并不真正指向任何真实的东西。最糟糕的是,上面的检查会通过,如果碰巧指针中的地址是您可以合法访问的内存,则会导致更严重的问题。在某些嵌入式环境中,您可能能够访问内存的任何部分,因此您可能会意外损坏内存的随机部分或执行代码的随机部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)