Нет, по двум причинам: Основная причина в том, что содержимое выделенного блока не имеет значения, важно освободить любые выделенные блоки. Вторая причина в этом специфическом случае заключается в том, что вы пишете в блок памяти, который изначально не был динамически выделен кодом (что может привести к неопределенному поведению).
Иллюстрируя первый пункт, давайте фактически выделим немного памяти динамически:
char *str = strdup("Hello/World"); // Allocates a block of memory and copies the string into it
char *pos = rindex(str, '/'); // Finds the slash
*pos = 0; // Terminates the string
free(str); // Releases the block
Тот факт, что мы записали терминатор строки в середину блока, не имеет значения, когда мы освобождаем память, освобождается весь блок.