Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
void* myfunction() { char *p; *p = 0; return (void*) &p; }
我知道问题出在 return 语句中,但它令人困惑。有什么提示吗?
谢谢。
您在 .return 语句之前有问题*p = 0;。你还没有初始化p,所以这会写入未初始化指针碰巧持有的任何随机位置。这给出了未定义的行为,因此之后没有任何有意义的解释。
*p = 0;
p
假设您解决了这个问题,那么是的,return 语句也是一个问题——您将返回一个指向在返回完成之前被破坏的数据的指针,因此任何使用您返回的指针的尝试都会再次导致未定义的行为。