memcpy和memmove以及结构体的大小

文章讨论了memcpy和memmove函数的作用,它们都是通过指针处理内存内容。同时,介绍了结构体在内存中的对齐规则,包括字节最小类型优先、默认对齐数以及结构体大小需为所有成员对齐数的公倍数。举例分析了不同结构体布局对大小的影响。
摘要由CSDN通过智能技术生成

memcpy就是传址复制,通过指针的形式来进行内容复制。

memmove就是传址移动,通过指针的形式来进行内容传递,

结构体的大小:

定义结构体的内容时尽量让char这种字节最少的在前面,long long int这种字节最多的在最后面,这样可以节省空间。

32位机器默认对齐数时4;64位机器默认对齐数时8.

对齐时的对齐数取自己的字节大小和默认对齐数取更小值。

每次开始时的地址必须是自己对齐数的倍数,结构体的大小必须是所有包含的内容的公倍数。

struct A

{

int a; a的对齐数是4,开始地址是0;

short b; b的对齐数是2,开始地址是4;

int c; c的对齐数是4,开始地址是8;

char d; d的对齐数是1,开始地址是12;

};

结构体的大小你认为是13吗?错,大小是16,因为结构体的大小必须是a,b,c,d这四个数的对齐数的公倍数。

struct B

{

int a; a的对齐数是4,开始地址是0;

short b; b的对齐数是2,开始地址是4;

char c; c的对齐数是1,开始地址是6;

int d; d的对齐数是4,开始地址是8;

};

结构体大小是12.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值