2012-04-19 7 views

ответ

3

Пока вы правильно doccument детали собственности буфера обрабатывается как такие же, и какой из них выбрать, зависит от вопроса выбора.

Пользователи второго образца должны быть четко проинформированы о том, что собственность на буфер передается им, и поэтому ответственность за его освобождение.

1

Если вы решили создать свою структуру данных и вернуть указатель (ваш второй способ, там), вызывающий должен знать, КАК вы выделили для этого место ... вы использовали malloc(), или GlobalAlloc() или какой-либо другой механизм? ... и затем используйте соответствующий метод, чтобы избавиться от вещи. Это достаточная причина для того, чтобы клиент выделил пространство и передал указатель, на мой взгляд.

Тем не менее, я бы никого не убивал, если бы использовал какой-либо метод, если бы они позаботились о том, чтобы правильно освободить память.

Это одна из причин, по которой COM-объекты полезны: клиенту не нужно знать, как был создан объект, он просто должен вызвать Release(), когда это будет сделано.

Смежные вопросы