0

私は完全に困惑しています。私はこれを何時間もデバッグしてきました。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");
    }
4

0 に答える 0