malloc()文档说返回的指针适合于任何类型的变量.在我的系统上,long double的大小为12,但malloc()返回的一些指针在8字节边界上对齐而不是12(ptr%12给出4).谁能指出我在这里失踪了什么?提前致谢.
小智 5
显然,long double不需要与12个字节对齐.在像你这样的系统上,原始C类型的最大对齐是8字节double.不要混淆对齐和大小 - 虽然许多较小的(特别是原始的)类型必须自然对齐 - 也就是说,与它们自己的大小对齐 - 这对于较大的数据类型(想想碎片)是禁止的,并且不会使任何更容易硬件.