sizeof常见的测试

本文通过实例代码详细测试了C++中sizeof应用于不同类型容器如vector、list、deque、map以及自定义类、结构体、联合体时的结果,并进行深入分析,揭示了sizeof在不同情况下的行为特性,包括内存对齐、容器容量和内存管理等知识点。
摘要由CSDN通过智能技术生成

目录

1.前言
2.环境
3.代码
4.结果
5.分析


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_ << 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值