什么是“内置类型”

时间:2016-11-30 14:45:00

标签: gcc malloc language-lawyer memory-alignment avx

  

malloc()和calloc()函数返回一个指向已分配内存的指针,该内存适合任何内置类型。

现在,GCC通过语法[1]

为矢量类型提供内置支持
template<class T>
using vec4_t __attribute__ ((vector_size (4*sizeof(T))))=T;

可以对两个vec4_t<float>或直接使用AVX vec4_t<double>进行算术运算,但malloc =时,T不能在32位平台上使用float = T时的double或64位平台。

现在there is P0035R1,这解决了过度对齐类型的动态分配问题。但为什么责备malloc而不是向operator new添加更多变体并不是更好?[2]事实上,编译器内置了对这些类型的支持,因此可以预期malloc工作正常。

[1]在C中,我必须为每个typedef指定类型

[2]页面对齐的内存是另一个问题

0 个答案:

没有答案