2012-05-11 44 views
2
void* myfunction() { 
char *p; 
    *p = 0; 
    return (void*) &p; 
} 

我知道问题出在return语句中,但它很混乱。任何提示?代码有什么问题?

谢谢。

+0

也许p还没有被你分配内存。并且* p可能是内存违规。 –

+0

你正在返回一个局部变量,这不好。 – Peter

+2

@Peter:返回一个局部变量的值不是问题。返回一个局部变量的*地址*(如这里) - 你的结论是正确的,但是问题的描述不是。 –

回答

8

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

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

+0

对,非常感谢! – Rafal

+0

@ BloodyHell666,如果这个答案帮助你解决了你的问题,那么你应该通过点击接受按钮来接受答案。 – Jay

+0

对不起,我是新来的。 – Rafal