Здравствуйте, DirtyGarry, Вы писали:
DG>BYTE* get_need_data(const BYTE* source_data, DATA_TYPE type, BYTE* need_data_buf)
DG>- source_data [in] — исходные данные DG>- type [in] — "критерий" поиска нужных данных DG>- need_data_buf [out] — буфер, содержащий нужные данные, если они не в source_data
DG>Функция всегда возвращает указатель на нужные данные. Если они находятся внутри source_data, то она вернет указатель, которые указывает внутрь source_data. Если нужных данных внутри source_data нет, она сама выделяет буфер need_data_buf, копирует туда данные и возвращает указатель на этот буфер.
Если данные найдутся, то вы вернёте указатель на const BYTE как указатель на BYTE. Это замечательный хак. У меня gcc только warning выдал, и после этого можно портить const данные.
Если не найдутся, то вы выделяете память внутри функции. Кто её будет освобождать? как вы узнаете выделилась новая память или вернулась старая?
Исходя из контекста вашей задачи, надо переосмыслить поведение функции.