代码有什么问题?

时间:2012-05-11 02:11:32

标签: c

void* myfunction() { 
char *p; 
    *p = 0; 
    return (void*) &p; 
}

我知道问题出在return语句中,但这很令人困惑。任何提示?

感谢。

1 个答案:

答案 0 :(得分:8)

*p = 0;中的return语句之前有问题。您尚未初始化p,因此这会写入整合指针恰好保留的任何随机位置。这给出了未定义的行为,因此之后没有任何有意义的解释。

假设你修复了那个,那么是的,返回语句也是一个问题 - 你将返回一个指向在返回完成之前被销毁的数据的指针,所以任何使用你返回的指针的尝试都会导致未定义行为再次。