文章目录
- C数据类型与内存大小深度解析
- 1. 内存大小与类型的关系
- 2. 内存布局可视化示例
- 3. 内存优化技巧
- 4. 内存限制检查
- 5. 实用内存计算工具函数
- 关键总结:
- 1. 数据类型大小规则
- 2. 内存对齐原则
- 3. 内存优化技巧
- 4. 内存层次
- 5. 内存计算公式
- 6. 跨平台注意事项
C数据类型与内存大小深度解析
1. 内存大小与类型的关系
#include<stdio.h>#include<stdint.h>#include<stddef.h>intmain(){// 1. 基本类型的大小(单位:字节)printf("=== 基本数据类型大小 ===\n");printf("char: %2zu 字节\n",sizeof(char));printf("short: %2zu 字节\n",sizeof(short));printf("int: %2zu 字节\n",sizeof(int));printf("long: %2zu 字节\n",sizeof(long));printf("long long: %2zu 字节\n",sizeof(longlong));printf("float: %2zu 字节\n",sizeof(float));printf("double: %2zu 字节\n",sizeof(double));printf("long double: %2zu 字节\n",sizeof(longdouble));printf("void*: %2zu 字节(指针大小)\n",sizeof(void*));// 2. 固定宽度整数类型(C99标准)printf("\n=== 固定宽度整数类型 ===\n");printf("int8_t: %2zu 字节,范围: %d 到 %d\n",sizeof(int8_t),INT8_MIN,INT8_MAX);printf("uint8_t: %2zu 字节,范围: 0 到 %u\n",sizeof(uint8_t),UINT8_MAX);printf("int16_t: %2zu 字节,范围: %d 到 %d\n",sizeof(int16_t),INT16_MIN,INT16_MAX);printf("uint16_t: %2zu 字节,范围: 0 到 %u\n",sizeof(uint16_t),UINT16_MAX);printf("int32_t: %2zu 字节,范围: %d 到 %d\n",sizeof(int32_t),INT32_MIN,INT32_MAX);printf("uint32_t: %2zu 字节,范围: 0 到 %u\n",sizeof(uint32_t),UINT32_MAX);printf("int64_t: %2zu 字节,范围: %lld 到 %lld\n",sizeof(int64_t),INT64_MIN,INT64_MAX);printf("uint64_t: %2zu 字节,范围: 0 到 %llu\n",sizeof(uint64_t),UINT64_MAX);// 3. 内存对齐的重要性printf("\n=== 结构体内存对齐 ===\n");structUnaligned{chara;// 1字节intb;// 4字节charc;// 1字节}unaligned;structAligned{intb;// 4字节chara;// 1字节charc;// 1字节}aligned;printf("非对齐结构体大小: %zu 字节\n",sizeof(unaligned));printf("优化对齐结构体大小: %zu 字节\n",sizeof(aligned)