[英]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把陣列的容量加倍了,但是我覺得做的太復雜了,所以想請教各位大大,能不能簡化一下。 我也對新的解決方案持開放態度。
int
不是大小的好類型。 使用正確的一種size_t
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.