Доброго времени суток! Подскажите пожалуйста такую деталь: char*s=”1234”; s=”ABCDEF”; Здесь будет утечка памяти, или все-таки перед повторным присвоением указателю s память освободится, на которую этот указатель показывал ранее?
Здравствуйте, Alexander! Обе строки - статически размещаемые данные, т.ч. ни какой утечки не будет, просто к первой строке ты больше не сможешь обратится. Утечка будет, если ты выделишь под первую строку память из кучи, а затем не уничтожая ее присвоишь указателью другое значение. Ответ отправлен: 25.06.2004, 05:12 Отправитель: bocha Отвечает vitya
Доброе время суток, Alexander! Это не правильный код. Хороший компилятор должен давать предупреждение. В стандарте ц++ char * s = "text"; все еще разрешен, но скорее в следующем они все уже будут подразумеваться, как const char * - короче - char * = "text" - это констатный массив. Ответ отправлен: 25.06.2004, 09:11 Отправитель: vitya Отвечает chebv
Приветствую Вас, Alexander! Здесь будет, во-первых, потеря памяти под "1234", во-вторых, указатель s будет указывать в неопределенное место в памяти. Вернее, в тот адрес, который получится преобразованием строки "ABCDEF" :) Ответ отправлен: 26.06.2004, 09:04 Отправитель: chebv
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.