Если строка длиннее - тогда всё что находится после такой строки будет сдвинуто и тогда поедут все указатели.
Если строка короче, но ты не удалял байты, а просто занулил их - должно работать, но может быть нюанс:
1. Строка может храниться не просто как её байты, а как длина + байты. Тогда тебе длину тоже надо поправить (например если это не си, где строки нуль-терминированные)
2. Тк строка эта константная - компилятор может при компиляции заинлайнить все проверки на длину, да и саму длину тоже.
Именно по этому нельзя менять длину строки. Ни в байтах, ни в символах.
В теории, программа может поломаться даже если ты поменяешь, например, текст на английском на текст на русском, если используется utf-8, тк разработчик, надеясь на то что строка его неизменна, может заслайсить такую строку по байтам, тк он знает точное расположение каждого символа, а после твоей манипуляции получится невалидный utf8, из-за которого может поломаться в другом месте, где эта валидность проверяется.