使用函数c ++创建对象

时间:2016-07-29 09:17:22

标签: c++ c++11

我必须在以下代码中找到可能的错误。这可能是什么?

cObject * CreateObject()
{
    cObject t;
    return &t;
}

5 个答案:

答案 0 :(得分:2)

您正在从堆栈返回地址。

答案 1 :(得分:2)

调用它后,此函数的调用者会做什么?

t的生命周期是什么,它什么时候结束?

这两者如何与不幸后果相结合?

  

t是函数的本地函数,它将在右括号处死亡。返回的指针根本无法使用,但这就是调用者可能会做的事情,触发未定义的行为。

答案 2 :(得分:1)

在堆栈上创建临时对象并返回指向它的指针。功能完成后无法保证它会存在。

答案 3 :(得分:1)

您正在将一个点返回到函数末尾不存在的本地对象

答案 4 :(得分:1)

你正在返回一个指向t的指针,当你从函数返回时,它会超出范围。您应该在函数内部创建一个新指针并返回该指针。

cObject *t = new cObject();
return t;