sizeof - 指针,数组,变量,结构体字节对齐-计算
来源:互联网 发布:mac如何将照片导入u盘 编辑:程序博客网 时间:2024/04/25 17:35
例子:
#include <stdio.h>struct{ short a1; short a2; short a3;}A;struct{ long a1; short a2;}B;int main(){ char * ss1="0123456789"; char ss2[]="0123456789"; char ss3[100]="0123456789"; int ss4[100]; char q1[]="abc"; char q2[]="a\n"; char * q3="a\n"; char *str1=(char *)malloc(100); void *str2=(void *)malloc(100); printf("%d\n",sizeof(ss1)); printf("%d\n",sizeof(ss2)); printf("%d\n",sizeof(ss3)); printf("%d\n",sizeof(ss4)); printf("%d\n",sizeof(q1)); printf("%d\n",sizeof(q2)); printf("%d\n",sizeof(q3)); printf("%d\n",sizeof(A)); printf("%d\n",sizeof(B)); printf("%d\n",sizeof(str1)); printf("%d\n",sizeof(str2)); return 0;}
[root@localhost ccy]# ./a.out
4
11
100
400
4
3
4
6
8
4
4
32位:
long - 4字节
short - 2字节
指针 - 4字节
定长数组 int a[100] - 长度*类型 - 100*4字节
不定长数组 char a[]="123" - 3+"\0" = 4字节
B结构体 - 8字节
因为a1为long为4字节,所有这个B结构体以4字节方式对齐,即a2为short 2字节,但B结构体总长度为8字节;
例如:
struct
{
int a1;
char a2;
}C;//8字节
struct
{
int a1;
char a2;
char a3;
}C;//8字节
struct
{
int a1;
char a2;
char a3;
char a4;
char a5;
char a6;
}C;//12字节
再经典一点:
struct
{
int a1;
char a2;
char a3;
char a4;
char a5;
}C1;//8字节
struct
{
char a2;
int a1;
char a3;
char a4;
char a5;
}C2;//12字节
一、C1结构体-8字节
|---------------int--------------|
|-char-|-char-|-char-|-char-|
二、C2结构体-12字节
|-char-|-------|-------|-------|
|---------------int--------------|
|-char-|-char-|-char-|-------|
最近有看到更经典的例子:
struct
{
int a1;
short a2;
char a3[2];
}C;
|---------------int--------------|
|------short-----|-char-|-char-|
struct
{
short a1;
int a2;
char a3[2];
}D;
|------short-----|--------------|
|---------------int--------------|
|-char-|-char-|--------|--------|
- sizeof - 指针,数组,变量,结构体字节对齐-计算
- 内存的字节对齐及结构体的sizeof计算
- sizeof计算结构体大小(字节对齐)
- 内存的字节对齐及结构体的sizeof计算
- 字节对齐 结构体的sizeof
- 笔试 sizeof 字节对齐 结构体
- 结构体的sizeof字节对齐问题
- 结构体sizeof不想字节对齐
- 结构体变量成员的字节对齐
- 计算结构体大小(字节对齐)
- 结构体存储空间大小计算&字节对齐
- 基于结构体sizeof的字节对齐问题讨论
- 计算结构体占用内存,sizeof,指针。
- 计算结构体占用内存,sizeof,指针。
- 字节对齐--对sizeof计算产生影响
- 全面总结sizeof(字节对齐、数组、类(继承、虚函数)、结构体、strlen)*最全面*
- sizeof 与结构体大小及结构体对齐问题, 字节对齐
- 全面总结sizeof的用法(定义、语法、指针变量、数组、结构体、类、联合体、位域位段)
- 贪心(排序原则)
- poj2034Anti-prime Sequences 打表+dfs
- java学习笔记<十四>set集合
- oracle安装
- 4G比3G更耗手机流量? 实测结果:这是错觉
- sizeof - 指针,数组,变量,结构体字节对齐-计算
- C#根据WSDL文件生成WebService服务端代码
- java 最大線程數理解
- 数字图像处理的基本步骤
- linux下如何安装新版的mysql
- 德赛td266解网络锁。
- allegro使用汇总
- php--对象的赋值与clone的区别
- 关于微信检测SDK应用的原理浅析(iOS)