0

所以我试图为一个二维整数数组分配内存,这样我就可以在确定大小的循环之外引用它。(我有一个范围问题,因为数组的大小不固定。)

所以这是建议的解决方案,但我收到错误“脚本值既不是数组也不是指针”。有人知道我在做什么错吗?

//M and m are just 2 int numbers
int X = self.create2dArray(M,m);

for(int kk = 0; kk < M; kk++)
{   
for (int kk1 = 0; kk1 < m; kk1++)
        {
//small "x" is an NSMutableArray of NSNumbers.  So I am just running the 2 for loops to fill the whole 2D array
        X[kk][kk1] = [[x objectAtIndex: (kk + kk1 * J)] intValue]; //ERROR Line
        }                   
}

//outside of Main

static inline int **create2dArray(int w, int h)
{
    size_t size = sizeof(int) * 2 + w * sizeof(int *);
    int **arr = malloc(size);
    int *sizes = (int *) arr;
    sizes[0] = w;
    sizes[1] = h; 
    arr = (int **) (sizes + 2);

    for (int i = 0; i < w; i++)
    {
        arr[i] = calloc(h, sizeof(**arr));
    }

    return arr;
}
4

2 回答 2

1

我相信第一行应该开始int** X而不是int X

于 2012-05-08T20:34:58.403 回答
0

好的,所以您的问题很可能在于您手动为整数分配内存。我提出的解决方案是用随机的“填充”数字填充它,例如:0。这样做,您不会冒险弄乱分配过程。此外,它更容易并且可以工作,因为您稍后将用整数填充它。希望这有帮助!

于 2012-05-08T20:27:24.930 回答