私は完全に困惑しています。私はこれを何時間もデバッグしてきました。100 x 100 の UInt32 のテーブルを割り当てています。値のテーブルをロードして、それらを 2D 配列に書き込んでいます。行 67、列 0 に到達すると、いくつかの奇妙な理由で、書き込みが行 0 の要素 0 に戻っているように見えます。
単一の malloc ではなく配列のリストを割り当てるように書き直しました。まったく同じ動作。インデックスの計算を試みました: _map[i,j] の代わりに _map[row * 100 + column] を使用すると、他の奇妙な動作が発生します。何かがあふれているのではないかと思っていたのですが、データが少なくてよくわかりません。明らかに私は何かばかげたことをしていますが、私はただ..それを見ることができません。
コードスニペット:
_map = malloc(100 * 100 * sizeof(UInt32));
int i = 0;
for (i=0; i <_columns; i++)
{
columnList = [[lineList objectAtIndex:i] componentsSeparatedByString:@","];
int j = 0;
for (j=0; j < _rows; j++)
{
UInt32 dataInt = atoi([[columnList objectAtIndex:j] UTF8String]);
// Convert the data
NSDictionary* tDict = [fileMap objectForKey:[NSString stringWithFormat:@"%i", dataInt]];
int newVal = [[tDict objectForKey:@"convert"] integerValue];
_map[i,j] = (UInt32)newVal;
UInt32 y = _map[i,j];
// This trips at row 67 element 0
if (_map[0,0] != 1)
printf("Here\n");
}
}
どんな助けでも、非常に高く評価されます。
後述するように、このコードは最初の行が破損するという同じ問題を引き起こします。すべての行が同じ行であるかのように:
int** testMap = malloc(100 * 100 * sizeof(int));
int data = 0;
for (int i = 0; i<100; i++)
{
for (int j = 0; j < 100; j++)
{
testMap[i, j] = data;
data++;
printf("(%i, %i)", i,j);
}
printf ("\n");
}