我有一些理解指針和動態內存分配的麻煩。我寫了這2碼:動態內存分配 - 二維數組
int **array;
array = malloc(nrows * sizeof(int *));
if(array == NULL)
{
fprintf(stderr, "out of memory\n");
return -1;
}
for(i = 0; i < nrows; i++)
{
*(array+i) = malloc(ncolumns * sizeof(int));
if(array[i] == NULL)
{
fprintf(stderr, "out of memory\n");
return -1;
}
}
和:
int **array;
array = malloc(nrows * sizeof(int *));
if(array == NULL)
{
fprintf(stderr, "out of memory\n");
return -1;
}
for(i = 0; i < nrows; i++)
{
array[i] = malloc(ncolumns * sizeof(int));
if(array[i] == NULL)
{
fprintf(stderr, "out of memory\n");
return -1;
}
}
他們應該分配的二維數組空間。雖然林不知道如果theyre都正確,我的意思是:這是否行:
array[i] = malloc(ncolumns * sizeof(int));
做同樣的事行這一個:
*(array+i) = malloc(ncolumns * sizeof(int));
?
這是一個很多malloc'ing。爲什麼不把整個數據集的1個malloc放在int *數組中? array = malloc(nrows * ncolumnc * sizeof()),由數組[x * nrows + y]或數組[x + ncolumns * y]引用。你的最後一個問題是正確的,他們是一樣的,儘管第一行看起來更清晰。 – EkriirkE