我必须在以下代码中找到可能的错误。这可能是什么?
cObject * CreateObject()
{
cObject t;
return &t;
}
答案 0 :(得分:2)
您正在从堆栈返回地址。
答案 1 :(得分:2)
调用它后,此函数的调用者会做什么?
t
的生命周期是什么,它什么时候结束?
这两者如何与不幸后果相结合?
t
是函数的本地函数,它将在右括号处死亡。返回的指针根本无法使用,但这就是调用者可能会做的事情,触发未定义的行为。
答案 2 :(得分:1)
在堆栈上创建临时对象并返回指向它的指针。功能完成后无法保证它会存在。
答案 3 :(得分:1)
您正在将一个点返回到函数末尾不存在的本地对象
答案 4 :(得分:1)
你正在返回一个指向t的指针,当你从函数返回时,它会超出范围。您应该在函数内部创建一个新指针并返回该指针。
cObject *t = new cObject();
return t;