#include <stdio.h>
void func(int arr[],int xNumOfElem)
{
int j;
for(j=0; j<xNumOfElem; j++)
{
arr[j] = j + arr[j];
printf("%d\t",arr[j]);
}
printf("\n");
}
int main()
{
int *a,k;
a = (int*) malloc(sizeof(int)*10);
for(k = 0; k<10; k++)
{
a[k] = k;
printf("%d\t",a[k]);
}
printf("\n");
func(a,10); //Func call
free(a);
}
在函數「func」中將爲動態數組「arr」分配/釋放內存。在這種情況下如何釋放記憶?
arr是函數參數。
沒有它是按值傳遞,如果ü改變它,它不會反映在主函數的函數裏面的內容。所以不知何故,內存是爲「arr」創建的。 ??? – Riyaz 2010-05-03 06:35:36
數組通過地址傳遞。如果你在函數fun中修改'arr',它會反映在'main'中。試一試。這表明整個數組只有一個副本被分配在'main'中。 – codaddict 2010-05-03 06:38:10
否在這種情況下不反映!!,打印調用函數後實際數組的內容。我證實了它。 – Riyaz 2010-05-03 06:46:54