用于创建对象的堆或堆栈?
Heap or stack for creating objects?
我有这个程序可以创建 "Computer components" 并将其存储在向量中并将对象写入文件。
如果我在堆栈上创建对象并将内存地址传递给向量,我会得到一个错误
如果我在堆上创建对象并将指针传递给向量,它就可以正常工作 "Component is a absract base class" 和 "CPU is a derived class from Component" 有人可以解释这是为什么吗?
vector<Component*>components;
CPU x;
CPU*y = new CPU();
components.push_back(&x) // results in debug error
components.push_back(y) // works fine.
writeTofile(components);
通过这样做
CPU x;
components.push_back(&x);
您在堆栈上创建一个本地对象并将其地址推送到向量。当函数超出范围时,您的本地对象不再存在,并且它在向量中的地址无效。
我有这个程序可以创建 "Computer components" 并将其存储在向量中并将对象写入文件。 如果我在堆栈上创建对象并将内存地址传递给向量,我会得到一个错误 如果我在堆上创建对象并将指针传递给向量,它就可以正常工作 "Component is a absract base class" 和 "CPU is a derived class from Component" 有人可以解释这是为什么吗?
vector<Component*>components;
CPU x;
CPU*y = new CPU();
components.push_back(&x) // results in debug error
components.push_back(y) // works fine.
writeTofile(components);
通过这样做
CPU x;
components.push_back(&x);
您在堆栈上创建一个本地对象并将其地址推送到向量。当函数超出范围时,您的本地对象不再存在,并且它在向量中的地址无效。