GCC或glibc中是否有任何标准化函数在对齐指针处分配内存块?像MSVC中的_align_malloc()一样?
Mar*_*sse 29
自提出问题以来,C11标准化了一项新功能:
void *aligned_alloc(size_t alignment, size_t size);
Run Code Online (Sandbox Code Playgroud)
并且它在glibc中可用(据我所知,不在Windows上).它的参数顺序与memalignMicrosoft的反向_aligned_malloc相同,并且使用与free通常相同的函数进行重新分配.
一个微妙的区别是aligned_alloc需要size倍数alignment.
jsc*_*ier 19
[
posix_memalign()] [1]函数提供对齐的内存分配,自glibc 2.1.91起可用.
但不一定与其他编译器一样:引用标准"posix_memalign()函数是咨询信息选项的一部分,不需要在所有实现中提供."
gal*_*tte 11
有_mm_malloc与_mm_free它是由在x86/x64世界上大多数编译器的支持,至少有:
AFAIK,这些功能根本不是标准.但据我所知,支持最多的是它.其他函数更具体编译器:
还有C11标准函数,但遗憾的是它们不在c ++ 11中,并且在c ++中包含它们需要非标准的预处理器定义...
这取决于您期望什么样的对齐方式。您想要更严格的对齐,还是更宽松的对齐?
malloc根据定义,保证返回一个正确对齐的指针,用于存储 C 程序中的任何标准类型(以及从标准类型构建的任何类型)。这是您正在寻找的吗?或者你需要一些不同的东西?
| 归档时间: |
|
| 查看次数: |
66179 次 |
| 最近记录: |