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

我知道问题出在 return 语句中,但它令人困惑。有什么提示吗?

谢谢。

4

1 回答 1

8

您在 .return 语句之前有问题*p = 0;。你还没有初始化p,所以这会写入未初始化指针碰巧持有的任何随机位置。这给出了未定义的行为,因此之后没有任何有意义的解释。

假设您解决了这个问题,那么是的,return 语句也是一个问题——您将返回一个指向在返回完成之前被破坏的数据的指针,因此任何使用您返回的指针的尝试都会再次导致未定义的行为。

于 2012-05-11T02:14:47.293 回答