为什么以下代码在代码块 13.12 中返回 12 而在 visual studio 2010 中返回 20?我也很困惑为什么它返回 0 以外的任何其他值,因为 vector 是动态的,我没有推回任何元素。
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <stdio.h>
#include <vector>
using namespace std;
class c
{
public:
vector<int>v;
c()
{
v.clear();
}
};
int main() {
int m;
c ob;
cout<< sizeof(ob);
}
最佳答案
因为 sizeof
运算符向您显示给定类型的对象表示的内存中大小(以字节为单位)。考虑到 vector
容器不仅包含数据(可能有计数器、指针等),内存中的确切大小取决于您使用的编译器中的实现。
在您的情况下,有不同的编译器取决于所选的 IDE:
- Visual Studio 中的 Visual C++
- 代码块中的 MinGW(最有可能)
如果您想知道 vector
中数据 的确切大小(以字节为单位)那么你可以使用下面的方法:
int vector_size = sizeof(int) * v.capacity();
关于c++ - 为什么 sizeof 在不同的 IDE 上返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33256137/