一. 首先看看默认情况下是如何对齐

IA32:

无论数据是否对齐, IA32硬件都能正确工作, 不过, Intel还是建议要求对齐数据以提高存储器系统的性能. Linux沿用的对齐策略是, 2字节数据类型 (例如 short) 的地址必须是2的倍数, 而较大的数据类型 (例如 int, int *[……]

阅读全文

曾经一直好奇c编译器如何做的类型转换, 最近研究了几天, 有了个大概的了解, 这里做个总结:

一.整型间转换

整型间的转换比较简单, 如果字长变化, 只需进行扩展或者截断

这方面gcc和msvc编译器做法大同小异, 就不分开讨论了, 就以gcc为例

1. 扩展:

比如int8到int32的扩展,[……]

阅读全文

前段时间看了下glibc的一些string库函数实现

自己照猫画虎的写了几个函数测了测, 比起windows vc中自带的实现, 并没有更快, 反倒是慢了很多.

比如memset函数, 微软公开的vc crt中memset.c是以字节为单位循环的.  如果用glibc中操作块与循环展开[……]

阅读全文