我完全难过了。我已经调试了好几个小时。我正在分配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");
}