C++中结构体类型(或则类类型)的大小
来源:互联网 发布:如何学java高级工程师 编辑:程序博客网 时间:2024/06/05 07:30
我们先观察下面的这个结构体,并用sizeof()函数去求该类型的大小。
struct TS{ int ma; double mb; char mc;};
可能很多人会想该类型的大小就是4个字节+8个字节+1个字节 = 13个字节。
可是但实际上结果却是输出24个字节。
size_t len;len = sizeof(TS );//作用于类型名cout<<len<<endl;//输出24
先别想太多为什么,我们接着看下面的这个结构体,并也是求该结构体类型的大小。
struct TC{ double mb; int ma; char mc;};如果你之前从未深思过该问题,你可能会觉得结构体TC和结构体TS没有区别啊,TC类型的
大小应该和TS一样也是24个字节,但是事实上TC类型却是16个字节。
size_t len;len = sizeof(TC );//作用于类型名cout<<len<<endl;//输出16看到这个结果可能我们都已经明白了,在C++中结构体类型或者类类型的内存分配规律,
其实在一个结构体,编译器在分配存储空间时,总是以该结构体的所有成员中成员类型存储空间最大的值为
基本单位去分配空间的。
例如:在TS中存储空间最大的成员类型为double类型,其大小值为8,所以以8为基本单位去
分配空间,先为ma分配8个字节,存储ma后多出4个字节,但是mb确实需要8个字节,所以必须再为mb分配
8个字节,最后再为mc,分配8个字节,所以一共是24个字节。
而在TC中先为分配8个字节,刚好够用,再为ma分配8个字节,多出4个字节,但是mc却只需要1
个字节,所以也多出的4个字节已经够mc用了,所以不需要再额外分配,一共是16个字节。
1 0
- C++中结构体类型(或则类类型)的大小
- truct 结构体类型的大小计算
- struct 结构体类型的大小计算
- struct 结构体类型的大小计算
- 关于结构体包含结构体的类型数据大小
- 内置类型大小 结构体大小计算
- c中结构体指针的强制类型转换
- 结构体的大小与基本类型的大小(32位)
- 类类型的大小
- 类类型的大小
- c语言中 结构变量,结构类型标示,结构类型定义的区别
- 【c#】类类型和结构类型的区别
- 关于C/C++中结构体(Struct)类型的sizeof结果的探讨
- c 结构体 字段的类型不完全
- c中union和struct类型的大小计算
- C语言(结构体、枚举类型、类型定义)
- 联合体结构体类型大小判断
- 结构体类型struct(c++)
- 删除重复字符 C++
- LeetCode - Remove Duplicates from Sorted Array
- http://blog.csdn.net/augusdi/article/details/8803099
- 项目部署到Tomcat报错
- C语言条件编译及编译预处理阶段
- C++中结构体类型(或则类类型)的大小
- String s = new String("xyz")创建了几个对象
- usaco training 4.2.4 Cowcycles 题解
- 函数参数的压栈过程
- C/C++堆、栈及静态数据区详解
- getElementByClassName
- 隐藏main()函数,使用一个全局对象的成员函数替代main()函数的功能
- 处理表达式中的空值:nvl()举例
- PB动态SQL语句