|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.06.2011, 07:20 | #1 |
Новичок
Джуниор
Регистрация: 09.06.2011
Сообщений: 7
|
Проболема с указателем на массив char
Доброго времени суток.
Задаю char массив и инициализирую его строкой как показано в коде ниже. Инициализируется нормально, строка выводится. Но когда начинает удалять массив, уходит в долгие раздумья, т.е. где-то в процессе реализации delete ход программы встает и ничего не делает. char *s=new char[]; s="111"; cout<<s; delete [] s; Помогите разобраться, пожалуйста, в чем проблема. |
09.06.2011, 08:24 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А все наверное дело в том что размер массива явно не указан. Это ИМХО, так как не спец в Сях.
I'm learning to live...
|
09.06.2011, 08:25 | #3 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Код:
|
|
09.06.2011, 08:51 | #4 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Отсюда и тормоза. Утечка сдесь, конечно же есть, но до момента удаления динамического массива.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
09.06.2011, 09:23 | #5 |
Новичок
Джуниор
Регистрация: 09.06.2011
Сообщений: 7
|
Ок, ясно. Спасибо за ответы.
Тогда такой вопрос: данный код я переписывал по разному, в том числе указывал размер массива явно. Но когда я в него записываю данные именно так: s="111"; все равно происходят тормоза даже если размер массива указан явно. Почему так происходит? |
09.06.2011, 11:52 | #6 | ||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Цитата:
Это не копирование строк, а арифметика указателей. Вы по адресу s записываете адрес строки "111", при этом адрес на тот массив, под который выделялась память, теряется и вы его никак не удалите, т.е. получите утечку памяти. |
||
09.06.2011, 12:18 | #7 |
Новичок
Джуниор
Регистрация: 09.06.2011
Сообщений: 7
|
Почему тогда в массив (если его объявить именно как массив) char'ов там можно записывать строки? И почему все виснет? Можно об этом по подробнее или же ссылочку на информацию?
|
09.06.2011, 12:41 | #8 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Виснет или вылетает ошибка? Про сишные строки написано во всех книгах по С++ |
|
09.06.2011, 14:00 | #9 | |||
Новичок
Джуниор
Регистрация: 09.06.2011
Сообщений: 7
|
Цитата:
Цитата:
Цитата:
|
|||
09.06.2011, 14:13 | #10 | ||
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2Геральт
скорей всего у тебя вылетает эксепшн с ошибкой доступа к памяти, а ты его не видишь, и думаешь, что висит. Цитата:
Цитата:
Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
указателем на char в структуре | H1ghlander | Общие вопросы C/C++ | 12 | 18.05.2013 23:49 |
Массив с указателем | Seferus | Общие вопросы C/C++ | 2 | 13.11.2010 17:57 |
c++ массив char | 0479 | Общие вопросы .NET | 2 | 19.09.2010 23:20 |
Массив типа char * | das Ma:dchen | Общие вопросы C/C++ | 9 | 13.06.2010 17:21 |
проблема с указателем на массив | Sergey.Voloxov | Общие вопросы C/C++ | 7 | 14.03.2010 17:47 |