c语言计算内存对齐Align

c语言计算内存对齐Align,第1张

c语言计算内存对齐Align

文章目录
  • 前言
  • 一、方法
  • 二、示例
  • 总结


前言 内存对齐在一些数据处理的场景中会被使用到,比如视频或音频数据的处理就会用到内存对齐,在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的文章,比较无奈吧。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5692211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存