Re: Какой прототип выбрать?
От: ra88  
Дата: 20.10.11 12:38
Оценка:
Здравствуйте, 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 данные.
Если не найдутся, то вы выделяете память внутри функции. Кто её будет освобождать? как вы узнаете выделилась новая память или вернулась старая?

Исходя из контекста вашей задачи, надо переосмыслить поведение функции.
while true;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.