Как только функция возвращается, стек функций разматывается и ссылки на локальные переменные функции недопустимы.Пока вы можете сойти с рук, но не полагайтесь на это!
Почему бы не передать выходной параметр в функцию для сохранения значения?Возможно, в этих строках:
void ezxml_parse_fd(int fd, ezxml_t *parse_value)
{
ezxml_root_t root;
//DO STUFF
*parse_value = &root->xml;
return;
}
...
ezxml_t xml;
ezxml_parse_fd(fd, &xml);
Если вы используете gcc
, есть большая вероятность, что вы могли увидеть предупреждение "warning: функция возвращает адрес локальной переменной" Пожалуйста, обратите внимание на предупреждение компилятора!Он только пытается помочь вам (в большинстве случаев):)
Надеюсь, это поможет!