他の人の C++ を (Objective) C に変換していますが、memcpy
. 次のように使用します。
memcpy((void *)virtualFlash[virtualFlashAddress], data, dataLength);
変数は次のように定義されます。
unsigned char virtualFlash[5 * 1024 * 1024]; // 5MB
NSUInteger virtualFlashAddress; // set to 8 later on
unsigned char *data = (unsigned char *)[recordData bytes]; // recordData is an NSData object
NSUInteger dataLength = [recordData length]; // same NSData object
memcpy の行に EXC_BAD_ACCESS が表示されます。recordData
を返し<d8ffbd27 2000b1af 1c00b0af 2400bfaf>
た と、16 を返した dataLengthをデバッグしました。両方とも正しいです。
memcpy((void*)virtualFlash[8], data, 16);
これはクラッシュします。私はmemmove
時々それが機能することを読みましたが、私の場合はそうではありません(同じEXC_BAD_ACCESS)。これは、正常に動作する C++ プログラムからほぼ正確にコピーされているため、どうすればよいかわかりません。C に関する私の知識はごくわずかなので、明らかな何かを見落としている可能性があります。