相关疑难解决方法(0)

测试有效性指针(C/C++)

如果指定的指针是"有效的",有没有办法确定(当然是以编程方式)?检查NULL很简单,但像0x00001234这样的东西呢?当试图取消引用这种指针时,会发生异常/崩溃.

首选跨平台方法,但平台特定(适用于Windows和Linux)也可以.

更新澄清: 问题不在于陈旧/释放/未初始化的指针; 相反,我正在实现一个从调用者获取指针的API(比如指向字符串的指针,文件句柄等).调用者可以(有意或无意地)发送无效值作为指针.如何防止崩溃?

c c++ validation null pointers

80
推荐指数
10
解决办法
10万
查看次数

如何检查指针是否有效?

我很清楚这个问题的丑陋,我还是想知道它是否可能:

当程序尝试读取/写入无效指针(NULL,未分配的块等)时,窗口会使应用程序崩溃并发生访问冲突异常.

问题是,有没有办法检查这个指针在尝试使用它之前会产生异常,否则,有没有办法捕获这个异常?

c winapi pointers

21
推荐指数
5
解决办法
5万
查看次数

你如何检查无效指针?

我目前的代码效果如下:

if( objectPointer != NULL){
    delete objectPointer;
}
Run Code Online (Sandbox Code Playgroud)

不起作用,因为编译器将指针设置为无效的十六进制数,例如:

  • 0xbaadf00d
  • 0xdeadbeef

等等....

那么在尝试删除对象之前检查无效指针的最佳方法是什么?

c++ pointers

12
推荐指数
3
解决办法
3万
查看次数

检查C++中的指针定义

如何检查变量,特别是指针是否在C++中定义?假设我有一个班级:

class MyClass {  
public:

    MyClass();

    ~MyClass() {
        delete pointer; // if defined!
    }

    initializePointer() {
        pointer = new OtherClass();
    }

private:

    OtherClass* pointer;

};
Run Code Online (Sandbox Code Playgroud)

c++ pointers

4
推荐指数
3
解决办法
2万
查看次数

标签 统计

pointers ×4

c++ ×3

c ×2

null ×1

validation ×1

winapi ×1