- 前言
- 一、方法
- 二、示例
- 总结
前言 内存对齐在一些数据处理的场景中会被使用到,比如视频或音频数据的处理就会用到内存对齐,在d3d中视频数据通常是按64位对齐的,音频的PCM也有blockAlign对齐。
一、方法
///二、示例/// 计算对齐后的长度 /// /// 原始长度 /// 对齐值 ///对齐后的长度 static int GetAlign(int len, int align) { double n = (double)len / align; return n > (int)n ? ((int)n + 1) * align : len; }
分辨率为568*320的视频,计算其rgba32格式的pitch(一行数据长度)按64位对齐。
int main(int argc, char** argv) { //rgba32为4bytes,一行长度即是宽x4 int pitch=568*4; printf("%dn",pitch); pitch=GetAlign(pitch,64); printf("align:%dn",pitch); return 0; }
输出:
2272
align:2304
总结
以上就是今天要讲的内容,本文仅仅简单提供了计算align的方法,实现很简单,使用也很简单。之所以编写这篇博文,是因为笔者要实现此功能的时候,在网络上搜索了一段时间没搜到,基本只要搜索内存对齐一定是科普结构体和#pragma pack的文章,比较无奈吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)