sizeof求结构体内存大小
来源:互联网 发布:多益网络 上市 编辑:程序博客网 时间:2024/05/03 02:04
首先不考虑设定字节对齐的大小:
首先要找到结构体中或类中最大的变量的大小,比如
struct A
{
char a;
int b;
double c;
};
在计算这个结构体的所占字节大小的时候,首先要获得结构体中最大的所占字节的大小,即double c的大小,即8;在计算最后的大小的时候,要补齐成最大的变量的整数倍,即8的整数倍;
然后就是开始一个一个计算大小了
a 0
b 4~7//因为int变量的大小是4,所以b的内存大小要从该变量所占内存大小的整数倍开始,即4
c 8~15//因为double变量的大小是8,所以从8开始
计算结果是0~15,长度是16,能够被8整除,所以长度是16;
typedef struct AA{char a;int b;double c;}strAA;int main(){/*cout<<sizeof(uint8_t)<<endl;cout<<sizeof(uint16_t)<<endl;cout<<sizeof(uint32_t)<<endl;cout<<sizeof(uint64_t)<<endl;cout<<sizeof(char*)<<endl;*/cout<<sizeof(strAA)<<endl;getchar();return 1;}输出结果是:
但是,如果我在结构体最后再加一个char d;大小最后是多少呢?是24
如果是设定字节对齐的大小,即#pragma pack()//括号中可以自己设定对齐的长度
如设定#pragma pack(2)
第一个结构体的大小是14,而第二个结构体的大小为16,至于怎么算的,和上述讲述道理一样;
/********************************************************************************分割线**********************************************************************/
下面贴上uint8_t,uint16_t, uint32_t, uint64_t的字节大小
0 0
- sizeof求结构体内存大小
- 结构体内存大小
- C结构体内存分配及sizeof大小总结
- C结构体内存分配及sizeof大小总结
- 结构体内存大小总结
- c++结构体内存大小
- 结构体内存分配与sizeof()
- 结构体内存分配及sizeof()用法
- sizeof与结构体内存对齐
- 结构体内存大小的问题
- 求结构体内存偏移地址
- VC中结构体内存分配问题透析(sizeof)
- sizeof:(含位域)结构体内存对齐,压缩存储
- VC中结构体内存分配问题透析(sizeof)
- VC中结构体内存分配问题透析(sizeof)
- C语言结构体内存对齐(计算结构体内存大小)
- sizeof求结构体大小
- sizeof求结构体大小
- (一二〇)CALayer的一些特性
- IOS 秒数转换为天数和小时数
- 创建型模式01:简单工厂模式、工厂方法模式、抽象工厂模式
- The JavaScript Event Loop: Explained
- POJ 1584 A Round Peg in a Ground Hole
- sizeof求结构体内存大小
- 多线程经典问题1——主线程子线程交替问题
- 浅谈iOS内存管理
- 黑马程序员------OC中NSLog与printf的区别
- Linux下如何用GCC编译动态库
- UI Block传值
- 动态规划基础入门(以数字三角形为例)
- Nginx模块开发(3)————使用upstream访问第三方服务
- leetcode 110: Balanced Binary Tree