我在 MS 代码示例中看到下一个代码:
PVOID alignedBuffer[BUFFER_SIZE/sizeof( PVOID )];
PCHAR buffer = (PCHAR) alignedBuffer;
hResult = FilterSendMessage( context->Port,
&commandMessage,
sizeof( COMMAND_MESSAGE ),
buffer,
sizeof(alignedBuffer),
&bytesReturned );
(alignedBuffer 将保存作为重播传递给 FilterSendMessage 调用的结构数组) 将 PVOID 转换为 PCHAR 有什么意义,这是否有助于对齐,如何?
最佳答案
您没有将 PVOID
转换为 PCHAR
。您正在将 PVOID
数组(衰减为 PVOID *
)转换为 PCHAR
。
PVOID alignedBuffer[BUFFER_SIZE/sizeof( PVOID )];
这将 alignedBuffer
定义为 PVOID
(或 void *
)的数组。作为指针数组,它将适当对齐(通常在 32 位上为 4 个字节,在 64 位上为 8 个字节)。如果你只是简单地做
CHAR buffer[BUFFER_SIZE];
没有类似的保证,因为 CHAR
没有对齐要求。
关于c++ - PVOID buffer转PCHAR有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24672256/