首先,我知道這應該已經在SO的某個地方回答了,但我似乎無法找到正確的帖子。所以,如果它是重複的,請指出我回復這個問題的帖子,我會刪除它。從函數調用返回後指針爲空
我有一個功能,副本的字符串:
static int read_ad_content(json_t * root, char* content)
{
[.. stuff happens]
const char* tmp = json_string_value(json_content);
unsigned int size = strlen(tmp);
content = (char*)malloc(size + 1);
memcpy(content, tmp, size);
content[size] = '\0'; // <= I checked and content is NOT null here!
return 0;
}
而且我在主函數調用它是這樣的:
char *ad_content;
if (read_ad_content(ad_json, ad_content) != 0)
{
log_err(argv, "Failed to extract information");
}
if (ad_content == NULL)
{
// <= I always end up here
}
我知道這應該是容易的,但我就是不知道如何解決這個問題。
您可以修改指針的副本。主叫方的'ad_content'永遠不會被觸碰。 – Mankarse
這不是參考語義的工作方式。例如。 [見這裏](http://stackoverflow.com/a/12449034/596781),或者只是想一下。 –
這是我昨天回答的非常類似的問題。[HERE](http://stackoverflow.com/questions/19214293/unable-to-modify-global-variable-in-c/19214332#19214332) – zubergu