Показать сообщение отдельно
Старый 27.06.2011, 18:17   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Странная вещь со строками

for (int i=0; i<6; i++) {
str[i]='';
}
правильно так:
	str[0]=0;
но строка по-прежнему будет занимать память. Этим ты только укажешь ей нулевую длину (конец нультерминированной строки находится в байте с кодом ноль).
Для непосредственного высвобождения памяти, строку надо создавать операторм new (или функциями malloc/realloc в Си-стиле)
char *str=new char[6];
Тогда удалить:
delete[]str;
.
Напомню, что char[6] рассчитан максимум на 5 байт текста (с индексами от 0 до 4) и один (с индексом 5) "закрывающий" строку ноль. Незакрытая строка может быть неправильно обработана функциями и это выйдет боком в произвольном месте (например, ты затрёшь рядом расположенную инфу).
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
baton4ik (27.06.2011)