Здравствуйте, Burd, Вы писали:
B>Я кажись понял. А кто под двойной указатель память выделяет?
B>value = (BYTE**) malloc (1 * sizeof(BYTE**));
Бррр
Смотрите, в функцию параметр приходит не по ссылке (&), он передается по значению. Это означает, что у вас будет утечка памяти при выходе из функции. Чтобы работал ваш вариант, функция должна была бы быть обявлена хотя как Func(BYTE**& value)
Передача в параметре указателя на указатель означает, что в функцию приходит не 0 (NULL), а адрес на какую-то переменную длиной sizeof(BYTE*), т.е. адрес переменной типа указатель на BYTE.
Т.е. в начале функции надо обязательно проверить, что пришел не 0, хотя бы в отладочной версии:
assert(value != 0);
В языке С++ это можно было бы записать как BYTE*& rValue.
void Func(/* out */ BYTE*& value)
{
...
}