附加到具有非动态分配堆栈的向量
Appending to vector with non-dynamically allocated stack
我正在研究一个编码问题,为了解决这个问题,我正在创建自己的数据结构(类(,"SetOfStacks",它的成员是堆栈向量。在 SetOfStack 的一个成员函数中,我需要使用 push_back(( 函数扩展向量。为此,我在成员函数中声明一个堆栈变量(非动态(,然后将该变量传递给 push_back((。
代码工作正常,但我不明白为什么。我认为在成员函数完成执行后,堆栈变量将超出范围(因为它不是动态分配的(,因此向量将包含垃圾。我认为解决方案是使用动态分配的内存。为什么会这样?我最好的假设是 push_back(( 按值而不是引用接收新堆栈,有效地制作了它的新副本。任何帮助不胜感激!
当您将堆栈元素push_back()
向量时,该元素将按值传递给向量,而不是作为引用,因此即使在函数定义之后堆栈元素被销毁,向量也已经获得了值。
这可以与从函数到调用方的返回值相关联。即使返回值是函数堆栈的本地值(即它将在函数执行后被销毁(,返回值也会在被销毁之前复制到调用方函数。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 在c++中使用动态分配的问题
- 使用递归模板动态分配的多维数组
- 对具有动态分配的内存和析构函数的类对象的引用
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 访问动态分配列表中的元素
- c++ 动态内存 堆栈中的分配
- 为什么不能在 Visual C++ 中动态分配堆栈内存?但海湾合作委员会可以做到
- 当一个类在构造函数处动态分配自己时,为什么会发生堆栈溢出而不是 std::bad_alloc
- 附加到具有非动态分配堆栈的向量
- 具有类作用域的动态分配堆栈内存
- 为什么我可以打印动态分配的对象,但不能打印使用 cout <<在堆栈上创建的对象
- 动态分配stdlib堆栈
- 多堆栈分配与动态分配
- 嵌入式C++:如何使用容器/数组在堆栈上回收变量与在堆上动态分配
- c++ -本地堆栈数组与动态分配
- 在堆栈上动态分配内存
- 当大小当前未知但堆栈无法容纳时动态分配内存
- C++如何在堆栈上动态分配内存