Короткий ответ: вы не можете.
Таким образом, вы получаете BYTE [] и размер, но вы не знаете, находятся ли данные в стеке или куче, поэтому вы не можете просто использовать realloc
или что-то сделать его больше.
Один из подходов состоит в том, чтобы убедиться, что массив больше, чем вам нужно, и передайте текущий и максимальный размер.
Другим подходом было бы изменить API, чтобы вы могли использовать realloc
или аналогично изменению размера массива.
Единственный способ, которым я могу думать без изменения API, - использовать какой-либо маркер в data
, чтобы разграничить использованное и неиспользуемое пространство (не работает для двоичных данных). например 0 означает неиспользованный, поэтому вы можете просто найти первый 0
и начать добавлять его.
Редактировать Возможно, я неправильно понял намерение. Если вы не хотите делать постоянные изменения, вы можете взять локальную копию, добавить к ней (и убедиться, что вы ее очистите). Я думал, что тебе нужен постоянный, «на месте».
является 'data' некоторой формой бинарного блоба? Если да, то почему вы хотите закрепить строку в конце? Что это может означать? Но ответ: вы не можете добавить его, вам нужно создать новый буфер, в который вы скопируете данные, а затем строку. – kfsone