我已经阅读了 aliged_alloc
的人,我应该像这样使用它:
void* aligned_alloc( std::size_t alignment, std::size_t size );
它使用
alloc
和 alignment
返回我想要指向 size
的指针。在我的代码中,我尝试使用它:
int *a = aligned_alloc(1024, 10*sizeof(a));
与
std::cout << alignof(a) << std::endl;
它给了我 8。但我希望结果是 1024,因为我的对齐是 1024。
我不明白什么?
最佳答案
a
的对齐方式不是 a
指向的内存的对齐方式。 alignof(a)
给出的值 8 是该类型所需的对齐方式,而不是 a
值的最大对齐方式。
当您执行 alignof(a)
时,它相当于执行 alignof(int *)
,这需要在您的编译器/机器上对齐 8。
关于c++ - Aligned_alloc 行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56581331/