如何编写if语句告诉程序指针是否已分配?
错误的例子
if (*badpdr[0]==0);
答案 0 :(得分:6)
你的意思是if (badptr==NULL)
?
请注意,在定义指针或“取消指定”指针时,必须先将指针设置为NULL(例如,删除它所引用的对象)。否则,它将包含垃圾,此测试将失败,因为该值不是0.
你也可以比较0而不是NULL,SO上已经有足够的参数,这是正确的形式所以我不会重复它们。
答案 1 :(得分:3)
char *ptr=NULL;
将指针初始化为NULL
;然后,您可以在尝试推断它之前检查它是否NULL
是否有效。
答案 2 :(得分:1)
在C++
未分配int
个变量时,它们的初始值为2686392!
答案 3 :(得分:0)
您可以为SIGSEGV
安装信号处理程序,然后尝试取消引用指针 - 如果您发现自己在信号处理程序内部,指针未被分配(或指向无效的内存地址,这基本上是相同的事情)
但是,可能存在未分配指针指向属于进程内存空间的有效地址的情况 - 在这种情况下,不会引发SIGSEGV
。
答案 4 :(得分:0)
您可以使用宏来完成工作:
var exec = require('child_process').exec;
module.exports.myFunction1 = function() {
return new Promise(function(resolve, fail){
// this function runs for like 3 seconds
exec('long running shell command' ,function(err,stdout,stderr) {
if (err) fail(err);
else resolve(stdout, stderr);
});
});
};
module.myFunction1()
.then(function(stdout){
console.log("Output myFunction1: " + stdout);
})
.then(module.myFunction2)
.then(function(stdout){
console.log("Output myFunction2: " + stdout);
})