内存是分配:堆或堆栈
Memory is allocation : heap or stack?
#include <iostream>
using namespace std;
struct number
{
int value;
int pos;
public:
number(int a,int b)
{
value=a;
pos=b;
}
};
int main() {
// your code goes here
number(1,2);
return 0;
}
在这种情况下,number(1,2)
的内存在哪里分配?在堆上还是堆叠上?我们如何验证它?
除了几个C++标准库函数外,C++没有堆栈或堆的概念。
有些人将与new
分配的东西等同于堆上,而所有其他东西都等同于在堆栈上分配的东西。但是static
存储和其他零碎的东西混淆了粗略的分类。
在您的情况下,number(1, 2);
是匿名的临时的,具有自动存储持续时间。一个好的编译器可能会注意到在构造或销毁匿名临时文件时没有副作用,因此可能会将其从编译的二进制文件中完全删除。所以第三种选择——根本没有记忆——在我看来是可能的。
相关文章:
- 从堆栈分配的原始指针构造智能指针
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- 堆栈分配的类类型.为什么两个 ID 实例的地址相同?
- C++析构函数调用两次,堆栈分配的复合对象
- 了解通过引用传递取消引用指针时C++堆/堆栈分配
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 何时在函数中声明堆栈分配变量?
- 使用 std::map 的递归堆栈分配如何工作?
- tcmalloc 与纯堆栈分配性能有多接近
- 安全分配堆栈分配的阵列
- C++ 中的黑白堆分配对象和堆栈分配对象的性能差异
- 跟踪(堆栈分配)对象
- 堆栈分配的确切时间
- 未初始化的值是由堆栈分配 - Qt - C++创建的
- 用于堆栈分配对象的C++虚拟析构函数内联
- C STD :: BAD_ALLOC来自堆栈分配
- 是使用COM创建的对象,将采用分配或堆栈分配的内存
- C++ 中针对大型的堆栈分配
- 堆栈分配的向量如何在 C++ 中扩展