簡體   English   中英

字符串數組 memory 在 C 中重新分配

[英]Array of strings memory reallocation in C

我有一個項目要做,我需要為陣列重新分配 memory。 我嘗試了很多次,但我發現只有一個版本有效。

void resize(int* size, char*** arr)
{
    *size *= 2;
    *arr = realloc(*arr, sizeof(char*) * *size);
    nulltest(*arr);    // This checks if the allocation was successful
}
resize(&size, &arr);

這個function把陣列的容量加倍了,但是我覺得做的太復雜了,所以想請教各位大大,能不能簡化一下。 我也對新的解決方案持開放態度。

  1. int不是大小的好類型。 使用正確的一種size_t
  2. 在沒有特殊需要的情況下,盡量避免副作用(即修改通過引用傳遞的對象)。
  3. 您的代碼可能會泄漏 memory。 如果realloc失敗,您將失去對先前分配的 memory 的引用。 size所引用的 integer 也無需更改。

我會這樣實現它:

char **resize(char **arr, size_t newsize)
{
    return realloc(arr, size * sizeof(*arr));
}

調用者 function 應該檢查錯誤。

但是定義這個 function 有什么意義呢? 這個只返回realloc的返回值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM