目录
1.前言
sizeof是C++中常用的检测对象占用内存大小的方法,也是面试中常考察的问题之一。虽说sizeof的用法很简单,但是如果没有真正用代码来实现过,未必能知道不同类型的对象所占用内存的大小。因此,下面我实际用代码来测试各种类型对象的内存容量大小。
2.环境
2.1 操作系统:windows 10 , 64位
2.2 编译工具:visual studio 2015
3.代码
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <list>
#include <map>
#include <deque>
#include <fstream>
using namespace std;
ofstream fout_;
class ClassA_ {};
class ClassB_
{
int a;
char b;
};
struct StructA {};
struct StructB
{
int a;
char c;
};
struct StructC
{
int a;
char c;
double d;
};
union UnionA {};
union UnionB
{
int a;
char c;
double d;
};
void test_sizeof_vector(void)
{
vector<int> v1, v2(2);
vector<ClassB_> v3, v4(4);
vector<StructB> v5, v6(6);
vector<UnionB> v7, v8(8);
fout_ << "-----------------------------------" << endl;
fout_ << "----------vector begin-------------" << endl;
fout_ << "vector<int> v1:" << sizeof(v1) << endl;
fout_ << "vector<int> v2(2):" << sizeof(v2) << endl;
fout_ << "vector<ClassB> v3:" << sizeof(v3) << endl;
fout_ << "vector<ClassB> v3:" << sizeof(v4) << endl;
fout_ << "vector<StructB> v5:" << sizeof(v5) << endl;
fout_ << "vector<StructB> v6(6):" << sizeof(v6) << endl;
fout_ << "vector<UnionB> v7:" << sizeof(v7) << endl;
fout_ << "vector<UnionB> v8(8):" << sizeof(v8) << endl;
fout_ << "-----------vector end--------------" << endl;
fout_ <<