我有一個關於我的應用程序設計的問題。 下面是僞代碼:我如何知道要重新分配多少內存?
char* buffer_to_be_filled = (char*) malloc(somesize);
fill_the_buffer(buffer_to_be_filled);
free(buffer_to_be_filled);
的問題是,我不知道fill_the_buffer
多大尺寸要求。
我在想fill_the_buffer
函數裏面的解決方案。 我也許可以在需要時重新分配裏面的空間;問題是,有沒有辦法找出我有多少空間?
這通常如何解決?我認爲分配緩衝區的人也應該重新分配緩衝區,對吧?
注:我使用fread
函數填充緩衝區,所以我不知道我需要多少空間。
ok,所以如果一個函數分配一些東西,它仍然是一個很好的「設計」,我檢索它,我負責釋放,我知道它會工作,我只是想確保這是一個普遍的做法 –
@javo你可以這樣做,但這實際上並不常見。通常分配內存的函數是釋放內存的函數。要麼將緩衝區傳遞給要填充的函數,要麼將函數保留在內部的靜態緩衝區中,下次調用它時會被覆蓋 –
是的。我理解你對試圖用同樣的方法保持分配和釋放的擔憂。然而這種方法並不少見;當使用這種模式時,建議以更明確的方式命名該函數,以便分配一個新的緩衝區,例如'Get_Data_From_XYZ()'或類似的東西,還可以評論API的明確性,關於需要調用者在不再需要時釋放緩衝區。 – mjv