我在看aligned-alloc()的解释: http://en.cppreference.com/w/c/memory/aligned_alloc
void *aligned_alloc( size_t alignment, size_t size );
“分配size字节的未初始化存储,其对齐方式由alignment指定。size参数必须是alignment的整数倍。”
但是,示例代码是这样使用它的:
int *p2 = aligned_alloc(1024, 10*sizeof *p2);
10*sizeof *p等于40,所以不是1024的整数倍。
我误解了什么?
最佳答案
其实C11标准好像拿不定主意,一直在改需求:一开始是undefined behavior,后来DR 460改成失败返回空指针,现在好像是想要更改它以接受任何值作为参数: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2072.htm
而且编译器似乎并不关心这些限制。
关于c - aligned_alloc 函数要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41031363/