我定义了一个结构:
struct something {
SimpleClass *object;
};
我想创建一个声明的这些结构的数组
something* array = (something*)malloc(sizeof(something) * 2);
然后,我循环创建结构,用对象填充它,并将其添加到数组中:
for (int i = 0; i < 2; i++) {
something aSomething;
SimpleClass anObject = SimpleClass(i);
aSomething.object = &anObject;
array[i] = aSomething;
// Point 1
}
// Point 2
在某些时候,对象会被销毁,因为如果我调用此行(例如):
array[0].object->doSomething();
它在“Point 1”处运行良好,但在“Point 2”处出现错误。
提前致谢。
最佳答案
对象正在被销毁,因为它们是循环本地的(在堆栈上创建)。相反,您必须使用关键字 new 才能在堆上创建它。尝试这样做
something & aSomething = *new something;<br/>
SimpleClass * anObject = new SimpleClass(i);<br/>
aSomething.object = anObject;<br/>
array[i] = aSomething;
将其放入 for 循环而不是您拥有的
另外,我建议使用 new 而不是 malloc 来创建数组,因为您使用的是 c++
关于c++ - 如何阻止在 C++ 中从开始销毁循环中创建的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16990236/