我想写一个函数来改变动态数组的大小,并允许用户一次填充它。我知道,我应该使用的“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