Re[3]: SymGetLineFromAddr64 SymGetSymFromAddr64
От: SergeyL Россия  
Дата: 23.08.05 10:34
Оценка:
Здравствуйте, Tom, Вы писали:

Посмотрел повнимательней — похоже Вы правы. В случае когда память выделяет клиент, он должен передать в функцию не просто указатель на буффер, а еще также и максимальный размер, что мы и видим в 1-м случае:

pSymbol->SizeOfStruct = sizeof(SYMBOL_INFO);
pSymbol->MaxNameLen = sizeof(buffer) - sizeof(SYMBOL_INFO) + 1;


С другой стороны, в IMAGEHLP_LINE64 нет поля для максимального размера, и соответственно мы не можем в функции SymGetLineFromAddr64 безопасно работать с буффером, если его выделит клиент.

Насчет того, должен ли клиент освобождать буффер или он просто получает доступ к строке которая в любом случае где-то хранится, я думаю можно провериить, возврашаются-ли при двух вызовах SymGetLineFromAddr64 разные адреса (тогда _может_ _быть_ можно удалять), или один и тот-же (тогда точно нельзя).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.