использование XMLString :: release (XMLCh ** buf) - PullRequest
1 голос
/ 26 марта 2012

Я использую xerces-c ++. Кажется, я не получаю XMLString::release ( XMLCh ** buf), поэтому сейчас я использую его каждый раз, когда хочу повторно использовать локальную переменную, такую ​​как:

XMLCh* xmlStringVar = XMLString::Transcode("name");
XMLCh* fieldName = fieldsNodeList[NbreFlds]->getAttribute(xmlStringVar));
XMLString::release(&xmlStringVar);
xmlStringVar = XMLString::Transcode("id");
XMLCh* fieldId = fieldsNodeList[NbreFlds]->getAttribute(xmlStringVar));

исправьте, пожалуйста, этот код, если что-то не так, и если вы получили более четкое описание функции XMLString::release, пожалуйста, сообщите мне.

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Документация Xerces гласит: «Реализация вызовет MemoryManager :: deallocate и , а затем превратит строку в нулевой указатель. » Чтобы присвоить строку нулевому указателю, требуется адрес указателя строки. Если бы это было только освобождение, передачи указателя (вместо адреса указателя) было бы достаточно.

1 голос
/ 26 марта 2012

Выглядит отлично. Как сказано в документации для XMLString :: release , используйте ее для освобождения памяти, выделенной функцией transcode ().

...