1


次のコードがあり、うまく機能します。

int Size ;
CString Message ;
BYTE Buffer[256] ;
Message = _T("Some Text") ;
Size = Message.GetLength() * sizeof(WCHAR) ;
memcpy(Buffer,&Message,Size) ;

しかし、これを次のように変更すると:

int Size ;
CString Message ;
BYTE* Buffer ;
Buffer = (BYTE*) malloc(256) ;
Message = _T("Some Text") ;
Size = Message.GetLength() * sizeof(WCHAR) ;
memcpy(Buffer,&Message,Size) ;

次に、バッファデータを確認します。ランダムなゴミバイトが入力されています

どうしたの ?

4

2 に答える 2

2

BYTE Buffer[256]BYTEのサイズに関係なく、 256 サイズの要素の配列を作成しBYTEます。 malloc(256)一方、256 バイトのメモリを割り当てます。試してみてくださいmalloc(256 * sizeof(BYTE))

于 2013-08-04T14:55:06.607 に答える