2012-05-08 39 views
0

所以我试图用于2D阵列的整数,使得我可以引用它在其中确定的尺寸的环的外侧分配内存。 (我有一个范围问题,因为数组的大小是不固定的。)脚本化值既不是一个数组,也不是一个指针

因此,这是所提出的解决方案,但我得到的错误“的脚本值既不是数组,也不是一个指针”。任何人都知道我在做什么错了?

//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; 
} 

回答

1

我认为,第一行应与int** X,而不是int X

+0

这个固定我的问题开始。似乎傻傻的回头看它。它总是微妙的,我想念。非常感谢! – MrHappyAsthma

0

好的,所以你的问题可能很可能在你手动分配内存的整数。我提出的解决方法就是用随机的“填充”数字填满它,例如:0。通过这样做,你不要冒险搞乱了分配过程。此外,它更容易和它的作品给你用整数后来被灌起来。希望这有助于!

相关问题