slinkinone
@slinkinone
Агент "Везде успеть"

Как правильно очистить участок памяти?

Доброго времени суток!
Хотел уточнить несколько моментов.
Допустим мы имеем указатель на строку (char* str). Необходимо её обрезать (оставить первые n/2 символов). Я так понимаю нужно найти начальную позицию(begin), конечную (end) и вызвать memmove. Затем почистить память str. В таком случае, мы получим лишние затраты по памяти в определённый момент выполнения программы.
Можно также влепить \0 на позиции end, но тогда получится что ошмётки строки будут безвозвратно потеряны.

Вопрос:
1. Какой метод по "обрезанию" строки наиболее практичен?
2. Есть-ли в моих суждениях ошибки?
3. Возможно ли провернуть фокус с освобождением только последней части строки? delete (str + pos) или нечто в этом роде?
  • Вопрос задан
  • 533 просмотра
Решения вопроса 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Стоп-стоп-стоп. Откуда взялось delete? Мы про C или C++?

В любом случае, delete можно давать на вход только то, что вернула когда-то new. Если вы скормите delete лажу вроде указателя на середину строки, будет неопределенное поведение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы