1
在下面的代碼末尾,我需要將哪個指針插入free(),array或temp_array?無論哪一個或將釋放內存塊是否有關係?指向指向內存塊的指針的指針,應該釋放哪個指針?
int *array = 0;
int *temp_array = 0;
int count = 0;
array = malloc(sizeof(int));
// skipping code where count is calculated...
temp_array = realloc(array, count * sizeof(int));
if (temp_array == NULL) {
free(array);
// some error message
return;
}
array = temp_array;
// skipping section of code, which reads numbers from a file and loads them into an array
// amount of numbers read can be 0 to whatever
free (array); // free array or temp_array?
此外,是否有可能分配的內存塊與realloc的,如果它試圖爲分配內存的指針爲NULL(換句話說,我是否需要使用malloc第一分配內存,後來與調整其大小realloc,還是我可以跳過malloc)?
我不確定是否我寫它是最好的方式,但代碼來自一個函數,它讀取文件中的整數並加載它們成陣列。無論如何,整數的數量可以是0。我在for循環外執行了malloc,循環遍歷文件中的數字,並在for循環中使用realloc來增加數組的大小。我不確定是否可以在NULL指針上分配內存,所以這就是爲什麼我先調用malloc的原因。如果指針爲NULL,是否可以使用realloc分配內存?即ptr = realloc(NULL,count * sizeof(int)); – Maya
好的。我會在包含記錄數的文件中創建一個標題。然後函數首先讀取頭int,分配足夠的內存然後讀取所有的值。 – suspectus
好主意!沒有想到這一點。 – Maya