【发布时间】:2021-04-05 09:10:26
【问题描述】:
这是测试我的问题的代码。
#include <iostream>
#include <stack>
using namespace std;
int main(){
int num;
int Array[1];
stack<int> Stack;
cout << "Int size " << sizeof(num) <<endl; // Output: Int size 4
cout << "Array size " << sizeof(num) <<endl; // Output: Array size 4
cout << "Stack size " << sizeof(Stack) <<endl; // Output: Stack size 80
return 0;
}
我正在尝试了解内存空间分配。通常 int 内存大小为 4 个字节。但是,当我在 std::stack 中初始化 int 数据类型的 Stack 时,Stack 的大小为 80 个字节。
应该是 4 吗?为什么std::stack 占用 80 个字节?或者堆栈内部实际上是 80 字节的大小?
【问题讨论】:
-
你使用的是什么编译器/标准库?
-
@AyxanHaqverdili GNU GCC 编译器
-
std::stack是一个类。类对象本身使用一些内存。 -
@JohnnyMopp 我也在课堂上进行了测试。类大小为 1 个字节。我认为堆栈包含占用 80 个字节的内容。问题是堆栈中实际占用 80 个字节的内容是什么?
-
一些常用集合使用的空间比较:ideone.com/f7sfcK
标签: c++ gcc memory-management stack libstdc++