void* myfunction() {
char *p;
*p = 0;
return (void*) &p;
}
我知道问题出在return语句中,但这很令人困惑。任何提示?
感谢。
答案 0 :(得分:8)
*p = 0;
中的return语句之前有问题。您尚未初始化p
,因此这会写入整合指针恰好保留的任何随机位置。这给出了未定义的行为,因此之后没有任何有意义的解释。
假设你修复了那个,那么是的,返回语句也是一个问题 - 你将返回一个指向在返回完成之前被销毁的数据的指针,所以任何使用你返回的指针的尝试都会导致未定义行为再次。