我已经阅读了 aliged_alloc 的人,我应该像这样使用它:

void* aligned_alloc( std::size_t alignment, std::size_t size );

它使用 allocalignment 返回我想要指向 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/

10-12 20:44