我想寫一個函數來改變動態數組的大小,並允許用戶一次填充它。我知道,我應該使用的「realloc的」做(所以我做,所以它的工作原理...),但我第一次嘗試是這樣的:C動態改變使用malloc和memcpy的數組大小的大小
void ChangeDynamicArraySize(int* dArray, int oldSize, int newSize){
int* tempArray = (int*) malloc(sizeof(int) * oldSize);
CopyArray(tempArray, dArray, oldSize);
free(dArray);
dArray = (int*) malloc(sizeof(int) * newSize);
CopyArray(dArray, tempArray, oldSize);
for (int i = oldSize; i < newSize; i++){
scanf("%i", &dArray[i]);
}
PrintArray(dArray, newSize);
free(tempArray);
}
在函數體「PrintArray(dArray,新尺寸) ;」工作正確。 但是從主稱爲()時,它給出的結果,如: - 17891602 - 17891602 - 17891602 - 17891602
所以看起來dArray被放了出來...?但據我所知分配的內存不會在退出函數後自動釋放。
那麼可能是什麼原因?
A,而CopyArray就是我的memcpy版本() – WJuz
'dArray'是按值傳遞的,你只是在改變它的本地副本。 – deniss