C语言学习
文章平均质量分 85
cjforever14
这个作者很懒,什么都没留下…
展开
-
结构体的对齐问题
最后一个d,对齐数为8,所以要在偏移量为8的整数倍处开始占位,刚才把s3排完一往后就是偏移量为24的位置,刚好满足,所以开始占位,再数一数一共32个字节,结构体的整体大小就是 该结构体中的嵌套结构体的最大对齐数和该结构体中其他成员对齐数 的最大值的整数倍,c1对齐数为1,s3最大对齐数为8,d的对齐数为8,所以s4大小为8的整数倍,刚好32个字节满足,所以不必浪费多余的空间,该结构体的大小就是32。s3最大对齐数为8所以要在偏移量为8的整数倍处开始占位,这里就是8的位置。S2大小为8个字节。原创 2023-10-14 11:56:38 · 64 阅读 · 1 评论 -
动态内存管理(介绍malloc,free,calloc,realloc函数)
malloc函数向内存申请一块连续可用的空间,并返回指向这块空间的指针如果开辟成功,则返回一个指向开辟好空间的指针。但不会初始化开辟空间的内容如果开辟失败.则返回一个NULL指针,因此malloc函数的返回值一定要做检查。返回值的类型void*,所以malloc函数并不知道开辟空间的类型,所以要根据需求自己来决定如果参数size为0,malloc的行为是标准是未定义的,取决于编译器。malloc申清的内存空间,当程序退出时,会还给操作系统。原创 2023-10-10 20:37:12 · 38 阅读 · 1 评论 -
部分内存函数
使用前需要 #include该函数最后会返回destination的地址;函数memcpy从source的位置开始向后复制num个字节并且该函数遇到\0不会停止复制source和destinetion部分不能出现重叠部分,否则可能出问题对于该函数你可以对任意类型的数组进行拷贝和粘贴操作,因为形参部分是void*,可以接收任何类型的指针经过简单的讲解,我们下面来模拟实现一下memcpy函数通过一个字节一个字节地拷贝粘贴来进行操作运行后结果为符合要求。原创 2023-10-08 20:19:34 · 35 阅读 · 0 评论