有时函数返回一个指针,使用指针会导致内存错误,虽然在使用之前检测其是否为NULL。原因在于,函数返回的指针,是在函数内部定义,然后返回的。如果在定义时不初始化为NULL,比如以下代码:
void* func(){
void *p;
p = ......;
return p;
}
因为没有初始化,所以,指针p是有值的,所以,检测时就不是NULL,但是它指向的可能是无权限访问的地址,或者,是可访问的求知地址,两种都会造成错误。而后者在某些情况下可能会更加严重,因为这个错误可以被可访问的内存地址掩盖。
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13895933/viewspace-1020871/ ,如需转载,请注明出处,否则将追究法律责任。