我在 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
s(衰减为 PVOID *
)转换为 PCHAR
。
PVOID alignedBuffer[BUFFER_SIZE/sizeof( PVOID )];
这将
alignedBuffer
定义为 PVOID
s(或 void *
s)的数组。作为一个指针数组,它将被适本地对齐(通常在 32 位上为 4 个字节,在 64 位上为 8 个字节)。如果你简单地做CHAR buffer[BUFFER_SIZE];
没有类似的保证,因为
CHAR
没有对齐要求。关于c++ - 将 PVOID 缓冲区转换为 PCHAR 是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24672256/