Когда я пытаюсь освободить память с помощью xerces "visual studio 2010", мой проект падает - PullRequest
2 голосов
/ 12 декабря 2011

Я работаю в проекте и использую библиотеку xerces.Когда я пытаюсь удалить указатель, мой проект падает.

Вот исходный код:

std::ostream& operator<<(std::ostream& target, const DOMString& s)
{
char *p = s.transcode(); // method from xerces
target << p;
delete [] p;

return target;
}

Этот метод отлично работает в Visual Studio 6 (я пытаюсь построить в 2010 году).

1 Ответ

5 голосов
/ 12 декабря 2011

Из документов xerces :

ПРИМЕЧАНИЕ. Возвращенный буфер распределяется динамически, и вызывающая сторона несет ответственность за его удаление, когда в нем больше нет необходимости.Вы можете вызвать XMLString :: release для освобождения этого возвращенного буфера.

Кажется, что xerces выделяет буфер , а не с new[] (возможно, malloc или каким-то другим пользовательским распределителем),Единственный способ гарантировать безопасное освобождение буфера - это: XMLString::release

...