类内存布局中的虚表项空间占用
发布日期:2021-06-30 22:10:27 浏览次数:2 分类:技术文章

本文共 1205 字,大约阅读时间需要 4 分钟。

前言

今天发现一个类,手工算的不对, 写了测试程序发现,虚表项的空间占用也有可能不是4个字节, 和数据成员基本数据类型的最大size有关。

记录

// testCase1.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include 
#include
#include
#include
#include "Test1.h"#include "Test2.h"int main(int argc, char* argv[]){ CTest1* pTest = new CTest1; CTest2* pTest2 = new CTest2; int iSize = sizeof(CTest1); /// size = 24 /** 类内存布局 007D4A30 1C 90 42 00 .怋. // 虚表,占用空间有对齐 007D4A34 CD CD CD CD 屯屯 // 空了4个字节,是虚表占用的空间和类最大基本数据类型(double)的size相关么? 007D4A38 01 CD CD CD .屯. // char 007D4A3C 02 00 00 00 .... // int 007D4A40 00 00 00 00 .... // double 007D4A44 00 00 08 40 ...@ */ int iSize2 = sizeof(CTest2); /// size = 16 /** 类内存布局 004E4A88 38 90 42 00 8怋. // 虚表,占用空间无对齐 004E4A8C 01 CD CD CD .屯. // char 004E4A90 02 00 00 00 .... // int 004E4A94 03 CD CD CD .屯. // char */ if (NULL != pTest) { pTest->fnv1(); pTest->fnv2(rand()); pTest->fn3(); pTest->fn4(rand()); delete pTest; pTest = NULL; } if (NULL != pTest2) { delete pTest2; pTest2 = NULL; } printf("END\n"); return 0;}

转载地址:https://lostspeed.blog.csdn.net/article/details/52589841 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:算法还原练习-20160920
下一篇:CryptCreateHash + CALG_MD5

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月24日 08时01分58秒