2011-02-12 7 views
1

このステートメントで何が問題になっていますか?それは正しくコピーされません。Cで配列をコピーする

memcpy(new_board1, board, sizeof(board)); 
+5

どのように「正しくコピーしないか」 –

+0

どうしますか? – mingos

+2

boardとnew_boardの宣言を表示できますか? – jwismar

答えて

7

memcpyは、ポインタ(宛先とソース)とコピーするバイト数の2つのメモリアドレスを受け入れます。現在、sizeofはポインタが指すメモリブロックのサイズを返しませんが、ポインタ自体のサイズは32ビットOSでは4バイト、64ビットOSでは8バイトです。

+3

が割り当てられているか、または16ビットOSで2バイトが割り当てられている限り、私は何も考えません; – Olhovsky

+0

u、ありがとう! – nubela

+2

または8ビットOSで1バイト。 –

3

sizeof(board)は、それが指しているもののサイズではなく、ポインタ自体のサイズを示します。 boardからnew_board1にコピーする実際のバイト数で置き換える必要があります。 boardnew_board1がどのように宣言されているかわからないと、その番号を見つけるのを手助けすることはできません。