c++之内存大小对齐。
uint32_t alignLen = (size + 4095) & (~4095);
#include <iostream>
#include <stdint.h>
#include <stdio.h>
#define ALIGN_4096(size) (((size) + 4095) & (~4095))
uint32_t aligned_size = ALIGN_4096(5000); // 示例:5000 -> 8192
/**
size + 4095:确保 size不足 4096 时能进位到下一个对齐边界。
& (~4095):清除低 12 位),得到对齐后的值。
*/
uint32_t alignTo4096(uint32_t size) {
return (size + 4095) & (~4095);
}
uint32_t align(uint32_t size) {
return ((size + 4095) / 4096 ) * 4096;
}
int test() {
printf("%u -> %u\n", 1, ALIGN_4096(1)); // 1 -> 4096
printf("%u -> %u\n", 4095, ALIGN_4096(4095)); // 4095 -> 4096
printf("%u -> %u\n", 4096, ALIGN_4096(4096)); // 4096 -> 4096
printf("%u -> %u\n", 5000, ALIGN_4096(5000)); // 5000 -> 8192
return 0;
}
// 使用c语言计算实现size向上对齐到4096byte。4KB向上对齐
int main()
{
std::cout << "Hello World!\n";
test();
return 0;
}
本文探讨C++中如何通过alignLen计算确保内存对齐,特别关注uint32_t类型,并揭示了4095操作在内存布局中的作用。

499

被折叠的 条评论
为什么被折叠?



