本文主要是介绍c语言计算内存对齐Align,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 一、方法
- 二、示例
- 总结
前言
内存对齐在一些数据处理的场景中会被使用到,比如视频或音频数据的处理就会用到内存对齐,在d3d中视频数据通常是按64位对齐的,音频的PCM也有blockAlign对齐。一、方法
/// <summary>
/// 计算对齐后的长度
/// </summary>
/// <param name="len">原始长度</param>
/// <param name="align">对齐值</param>
/// <returns>对齐后的长度</returns>
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("%d\n",pitch);
pitch=GetAlign(pitch,64);
printf("align:%d\n",pitch);
return 0;
}
输出:
2272
align:2304
总结
以上就是今天要讲的内容,本文仅仅简单提供了计算align的方法,实现很简单,使用也很简单。之所以编写这篇博文,是因为笔者要实现此功能的时候,在网络上搜索了一段时间没搜到,基本只要搜索内存对齐一定是科普结构体和#pragma pack的文章,比较无奈吧。
这篇关于c语言计算内存对齐Align的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!