Я пытаюсь создать пакет данных, используя memcpy
. Я ожидаю увидеть вывод в pOutBuffer
, первые четыре байта которого будут иметь 999, затем 111 и 12; Но в настоящее время я получаю немного мусора.
Проблема в том, что вместо копирования значения, я думаю, он копирует адрес. Как я могу скопировать эти значения в непрерывную память, чтобы я мог записать их на диск и получить данные на принимающей стороне в моем определенном формате?
Спасибо.
#include "stdafx.h"
#include "windows.h"
typedef struct
{
int Begin;
int End;
int Size;
}PACKET;
void AddBuffer(PACKET* pPacket, BYTE* pOutBuffer)
{
memcpy(pOutBuffer, &pPacket->Begin, sizeof(int));
memcpy(pOutBuffer+sizeof(int), &pPacket->End, sizeof(int));
memcpy(pOutBuffer+sizeof(int)+sizeof(int), &pPacket->Size, sizeof(int));
}
int _tmain(int argc, _TCHAR* argv[])
{
PACKET* pPacket = new PACKET;
pPacket->Begin = 999;
pPacket->End = 111;
pPacket->Size = 12;
BYTE* pOutBuffer = new BYTE [pPacket->Size];
AddBuffer(pPacket, pOutBuffer);
//Write pOutBuffer on to the disk
//WriteFile(vhFileToWrite,(BYTE*)pOutBuffer,pPacket.Size,&vRetFileSize,NULL);
//Delete pOutBuffer
return 0;
}
Исходный образец обновлен. Теперь он строит нормально