课本上经常提到“内存对齐”,我一直感觉这是个很抽象的概念。最近在调试代码的时候,偶然发现了一个函数,竟然实现了这个功能!
“内存对齐”应该是编译器的“管辖范围”,编译器将程序中的每个数据单元安排在适当的位置上。
/*!
Aligns buffer size by the certain number of bytes
This small inline function aligns a buffer size by the certian number of bytes by enlarging it.
*/
static inline size_t alignSize(size_t sz, int n)
{
return (sz + n-1) & -n;
}
数据sz要存储到内存中,以N为单位进行内存对齐。
该函数返回的是实际中要分配的内存空间。