内存分配 - 4个地址的多个地址

Mut*_*pan 0 c memory memory-management

我需要分配4字节内存,分配的内存地址应该是4的倍数.例如:400,404,408,40c

如果我使用任何内存分配功能,我会收到可用的内存,地址不一定是4的倍数.

所以任何人都可以建议实现这个设计.

Guy*_*ton 5

在Microsoft C/C++编译器中,您可以使用_aligned_malloc并在Linux posix_memalign中使用.

MSVC:

ptr = _aligned_malloc(4, 4);
Run Code Online (Sandbox Code Playgroud)

签名:

void * _aligned_malloc(size_t size, size_t alignment);
Run Code Online (Sandbox Code Playgroud)

Linux的:

posix_memalign(&ptr, 4, 4); // returns 0 if successful
Run Code Online (Sandbox Code Playgroud)

签名(与MSFT相比,注释顺序相反):

int posix_memalign(void **memptr, size_t alignment, size_t size);
Run Code Online (Sandbox Code Playgroud)