填充表会导致意外结果

时间:2014-06-01 02:53:28

标签: objective-c arrays dimensional

我完全难过了。我已经调试了好几个小时。我正在分配100个UInt32s的表。我正在加载一个值表并将它们写入2D数组。出于某些奇怪的原因,当我到第67行时,第0列写入似乎回绕到第0行元素0.

我重写了它以分配数组列表而不是单个malloc。同样的确切行为。我试过为索引做数学:_map [row * 100 + column]而不是_map [i,j],这会导致其他奇怪的行为。我想也许有些东西溢出来了,但我不知道数据是如此之小。显然我正在做一些愚蠢的事情,但我只是......不能......看到它。

代码段:

_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");
    }

0 个答案:

没有答案