相关疑难解决方法(0)

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

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

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

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

c c++ validation null pointers

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

检查宏参数是否是指针

是否有一些"好"的方法来检查传递给宏的变量是否是一个指针?例如

#define IS_PTR(x) something
int a;
#if IS_PTR(a)
printf("a pointer we have\n");
#else
printf("not a pointer we have\n");
#endif
Run Code Online (Sandbox Code Playgroud)

这个想法是,这不是运行时而是编译时,如下所示:我们根据变量是否为指针得到不同的代码.所以我希望IS_PTR()以某种方式评估某种常量表达式.我是怎么回事这个想法的?

c variables macros pointers variable-types

10
推荐指数
4
解决办法
3189
查看次数

标签 统计

c ×2

pointers ×2

c++ ×1

macros ×1

null ×1

validation ×1

variable-types ×1

variables ×1