使用函数c++创建对象
Object Creation with a function c++
我必须在下面的代码中找到一个可能的错误。可能是哪一个?
cObject * CreateObject()
{
cObject t;
return &t;
}
您正在从堆栈返回地址。
这个函数的调用者在调用它之后会做什么?
t
的寿命是多少?它什么时候结束?
这两者将如何结合起来,带来不幸的后果?
t
是函数的局部,它将在右大括号处消亡。返回的指针根本无法使用,但调用方可能会这样做,从而触发Undefined Behavior。
您在堆栈上创建一个临时对象并返回一个指向它的指针。不能保证它在函数完成后仍然存在。
您正在将一个点返回到不存在于函数末尾的本地对象
您正在返回一个指向t的指针,当您从函数返回时,它超出了范围。您应该在函数内部创建一个新指针并返回该指针。
cObject *t = new cObject();
return t;
相关文章:
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何创建对象函数指针C++映射?
- C++创建对象数组
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何获取在 main() 函数中构造的类的创建对象?
- 基于文件中的条目创建对象
- 错误:创建对象后无法分配区域
- C++ 通过输入创建对象
- 堆还是堆栈用于创建对象?
- 使用 C++ 创建对象数组
- 使用unique_ptr创建对象
- C++递归地在类构造函数中创建对象
- 通过向构造函数其他对象引用页面来创建对象
- ReactiveX (rx) - 在对象上应用可观察对象,而不是在可观察对象中创建对象
- 如何在OSX上正确创建C++对象文件(.o)
- 编译器是否会创建vtable,而不考虑在c++中创建对象
- 创建对象并防止被破坏
- 在C++中,友元类可以从友元类创建对象吗
- 只在堆中创建C++对象
- 创建用户定义的复制构造函数时无法创建对象