Заставить «вставить байты» и «удалить байты» для работы через «вставку байтов» с положительным / отрицательным смещением - PullRequest
0 голосов
/ 31 января 2011

У меня есть две одинаковые операции:

insert_bytes(from, count)
delete_bytes(start, stop) -> delete_bytes(from, count)

Пример реализации insert_bytes:

unsigned char* new_bytes = (unsigned char*)malloc((old_length+count)*sizeof(unsigned char));
memcpy(new_bytes, old_bytes, from); // negative value can't go to from here
memcpy(new_bytes+count, old_bytes+from, old_length-from); 
return new_bytes+from; // pointer to write

существует ли какой-либо безопасный способ реализовать delete_bytes как вызов insert_bytes (с отрицательным смещением) без записи 5-6 строк проверки положительного / отрицательного значения?

1 Ответ

1 голос
/ 31 января 2011

Нет ... ваша функция удаления не знает, сколько было malloc'е ранее.

  • Если вы создали класс C ++ (помеченный как C), вы можете инкапсулировать текущий размер.
  • Вы можете сделать функцию: resize (from, current_size, delta), которая будет работать.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...