-
2004-09-22
对齐,还是对齐
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://ffmpeg.blogbus.com/logs/403457.html
如果希望结构体中的某个数据保持某种对齐的话。那么你必须定义一个这样的全局结构体变量,并且在需要对齐的位置,写上这样的代码 __attribute__ ((alinged(32))).
如果这个的一个结构体空间不是通过全局变量来定义的话,而是用malloc来分配的堆空间,或者栈空间,显然无法保证,你需要的那种对齐。
一种折中的方法是分配一个大一点的空间(如果是32对齐的话,分配大于32的空间),然后在从对齐的地方开始使用。最后释放的时候还得使用不对齐的那个地址。
p1=malloc(strucA+32);
p2=(p1&-32)+32;
p2将是我们使用的32对齐的指针。释放的时候,用 free(p1)
随机文章:
GCC精彩之旅--转帖 2004-10-16防止gcc -O3 强制 inline一个函数 2004-10-07从ffmpeg中提取mp3播放器 2004-11-06如果用前面的方法对齐,好像要搞两个指针 2004-09-23gcc编译步骤控制 2004-09-06
收藏到:Del.icio.us







