如果指定的指针是"有效的",有没有办法确定(当然是以编程方式)?检查NULL很简单,但像0x00001234这样的东西呢?当试图取消引用这种指针时,会发生异常/崩溃.
首选跨平台方法,但平台特定(适用于Windows和Linux)也可以.
更新澄清: 问题不在于陈旧/释放/未初始化的指针; 相反,我正在实现一个从调用者获取指针的API(比如指向字符串的指针,文件句柄等).调用者可以(有意或无意地)发送无效值作为指针.如何防止崩溃?
如何确定是否取消分配整数?
int i; /* no assignment */
if (/* conditional statement here to check if int i is unassigned or not */) {
printf("Integer is unassigned!\n");
} else {
printf("Integer is assigned!\n");
}
Run Code Online (Sandbox Code Playgroud) 我有以下用例,一个带有一些boolean和int变量的结构
struct a {
int field1;
bool field2;
bool field3;
};
Run Code Online (Sandbox Code Playgroud)
我正在重构这段代码,并为struct编写构造函数,问题是字段的默认初始化.
我不是在批评任何语言构造,但理想情况下我希望null成为语言本身的一部分
我的意思是我应该能够为结构a定义为
a : field1(null.int), field2(null.bool), field3(null.bool) {}
Run Code Online (Sandbox Code Playgroud)
C++不允许它,因为没有定义null.int或null.bool.在C++中唯一的方法是
a: field1(-1), field2(false), field3(false) {}
Run Code Online (Sandbox Code Playgroud)