c++ - 为什么 sizeof 在不同的 IDE 上返回不同的值?

标签 c++ sizeof

为什么以下代码在代码块 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/

相关文章:

c++ - C++ 中#define 宏扩展的行为

c++ - 为什么这个数组的 sizeof() 是非法的?

c++ - 需要在后代 .h 文件中重新声明被覆盖的函数

c++ - Qt - 设置不可编辑的QComboBox的显示文本

c++ - 当我使用 cout.tie(NULL) 时,程序不会为我的代码打印任何内容,但如果我打印 endl,程序工作正常

c++ - C memset 似乎没有写给每个成员

c - 滥用大小 : get the size of a const table

c++ - 什么决定了这里的对象大小?

c++ - C memcmp 第三个参数类型

c++ - 如果分配该数组引发异常,您是否应该释放该数组?