我想用函數重新分配一個字符串數組。我寫了一個非常簡單的程序來演示這裏。我期望得到字母「b」被輸出,但我得到NULL。C:重新分配一個字符串數組
void gain_memory(char ***ptr) {
*ptr = (char **) realloc(*ptr, sizeof(char*) * 2);
*ptr[1] = "b\0";
}
int main()
{
char **ptr = malloc(sizeof(char*));
gain_memory(&ptr);
printf("%s", ptr[1]); // get NULL instead of "b"
return 0;
}
非常感謝!
不要強制返回'realloc',畢竟這是C語言。 (這樣做可能會隱藏編譯器會告訴你的問題。) –
另外,不要將realloc的結果立即分配給要重新分配的指針。如果'realloc'失敗,你就失去了原來的指針並泄漏了內存。 (哦,並檢查分配是否失敗。) – jamesdlin