c++ - 将对象存储在 std::vector 中会增加对象的生命周期吗?

标签 c++ memory-management stdvector

for (int i = 0; i < 10; i++)
    { 
        nueron temp; // my Class
        _inputNuerons.push_back(temp); // _inputNuerons is a std::vector 
    }

据我所知,C++ 在到达 for 循环的 } 括号时释放临时对象。 但是将对象存储在 std::vector 中是否会使该对象稍后在程序中可用? 现在,当我尝试访问 for loop 之外的“temp”nueron 时,程序崩溃了。

如何将我的对象存储在 std::vector 中以便稍后使用?

最佳答案

你的神经元对象将在 for block 的末尾被销毁。 您应该使用动态分配,并将指向该对象的指针存储在 vector 中。

for (int i = 0; i < 10; i++)
{ 
    nueron* temp = new neuron(); // my Class
    _inputNuerons.push_back(temp); // _inputNuerons is a std::vector 
}

_inputNeurons 集合应该是神经元指针的集合。

关于c++ - 将对象存储在 std::vector 中会增加对象的生命周期吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31081850/

相关文章:

c++ - 比较使用不同分配器的 STL 字符串

c# - 跟踪 GPU 内存泄漏的专业方法(分配而不释放)

c++:将指针传递给 vector 时函数不明确

c++ - CMFCStatusBar 双击事件

c++ - Qt 显示应用程序,如果当前正在运行

c++ - 使用 Arduino IDE 编程是否适合商业产品?

c++ - 无法打印指针 vector

c++ - 错误:没有用于调用 BSTLink::construct(BST*, BST*, BST*) 的匹配函数

pointers - Ifort : move_alloc() on attribute of a Pointer, intent(in) 触发错误

c++ - 在泛型函数中接受指针/迭代器