进一步分析问题,还能够发现,ptr 应该指向一段 1024 字节的内存,因此相关的C语言代码可以这样写: 相关的C语言代码 第一步就是分配一块足够大的内存,由于内存必须是 16 字节对齐的,以防万一,我们多分配了 16 字节,便于调整 ptr 指针的值。16 个连续数字里,必定至少有一个数能够被 16 整除,因此在前 16 个字节...
为了提高数据访问的效率,需要对结构体中的成员进行对齐。对齐的目的是使结构体成员的首地址能够被其大小所整除,这样可以减少访问数据时的内存浪费。 三、C 语言中的结构体对齐规则 C 语言中的结构体对齐规则是按照成员的大小进行排列,从大到小。当一个成员的大小小于等于 16 字节时,它会被紧挨着放置在前一个成员...
但是应该注意,传递给 free() 函数的必须是 malloc() 函数返回的地址,也即 mem,而不能是 ptr,否则C语言程序就会崩溃。 题外话 可能有读者知道自己使用的系统中 malloc() 函数的内部实现,可能它返回的地址必定是 16 字节对齐的(或者 8 字节对齐,4 字节对齐等等),那么似乎就不再需要 ptr,直接使用 mem 就可以了...