1

Vertex3D 構造体の C スタイルの配列を NSData オブジェクトに保存し、アプリのリロード時にそれらを取得しようとしています。

NSData *vert = [NSData dataWithBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];  

このデータは保存され、次のように私の c-array に読み戻されようとします。

vertices = malloc(sizeof(Vertex3D) * NUM_OF_VERTICES);
[vert getBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];  

上記の結果は、「EXC_BAD_ACCESS」の後に次のようになります。

malloc: *** error for object 0x48423c0: pointer being freed was not allocated  

私はプログラミングに非常に慣れていないので、おそらく私が知らない基本的なメモリ管理の原則がいくつかあります。ロードされた NSData が保存されたものと同一であることを確認しましたが、c-array から NSData への移行 (およびその逆) が意図したとおりでないことは明らかです。

4

1 に答える 1

2

vertices変数の宣言を見ずに判断することは不可能&verticesですが、質問にリストしたコードでは使用が間違っている可能性があります。が C 配列の場合vertices、それは既にポインターであるため、アドレス演算子を省略してください&

于 2010-03-11T21:34:48.420 に答える