我读过的人,aliged_alloc应该这样使用:
void* aligned_alloc( std::size_t alignment, std::size_t size );
Run Code Online (Sandbox Code Playgroud)
它返回我希望指针alloc与alignment和size。
在我的代码中,我尝试使用它:
int *a = aligned_alloc(1024, 10*sizeof(a));
Run Code Online (Sandbox Code Playgroud)
与
std::cout << alignof(a) << std::endl;
Run Code Online (Sandbox Code Playgroud)
它给了我8。但是我希望结果是1024,因为我的对齐方式是1024。
我不明白什么
的对齐a方式不是指向的内存的对齐方式a。给出的8值alignof(a)是该类型所需的对齐方式,而不是的最大对齐方式a。
当您执行时alignof(a),它等同于执行alignof(int *),这要求编译器/计算机上的对齐方式为8。