【发布时间】:2024-01-30 02:55:01
【问题描述】:
对于C++来说,当我们检查指针是否有效时,通常我们会这样做:
if (p == NULL){
// error handling
}
然而,在VC++中,即使p不是NULL(也就是0),它是0x00000004,也意味着Bad Ptr。然后引发异常,我们知道这个地址是受保护的,不能被覆盖。
我在这里搜索过类似的问题,但没有得到答案。
我的问题是:
- 当 Bad Ptr 发生时,为什么不将此指针设置为 0?
- 由于Bad Ptr的值不为零,VC++中如何判断指针是否有效?
【问题讨论】:
-
Bad Ptr 表示指针变量的值从未被初始化。调试助手用一个特定的值初始化它,以便它可以检测到这一点。指针在定义变量时应该初始化的一般规则也不例外。
标签: c++ pointers visual-c++ window