![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#21 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]()
Вообще, что такое n и зачем оно нужно?
Если это максимальная длина слова в файле, то не забудьте, что еще должен быть '\0' в конце, т.е. резервировать нужно n + 1 байт на слово. И работайте с заранее подготовленным и проверенным файлом, чтобы исключить ошибки связанные с генерацией данных. Последний раз редактировалось Croessmah; 14.10.2017 в 18:52. |
![]() |
![]() |
![]() |
#22 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
![]()
Функцию забыл убрать просто... это не решает проблему, но если убрать всё, кроме выделения и освобождения памяти, то ок.
Значит, ошибка в заполнении массива. Хорошо. В чём может быть проблема? Может, в считывании Код:
не литералом '\0' всё завершается? Смотрю - вроде, нет... |
![]() |
![]() |
![]() |
#23 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]() |
![]() |
![]() |
![]() |
#24 | |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
![]() Цитата:
Спасибо! Говорил же, что ошибка очень проста) Последний раз редактировалось Haric_110; 14.10.2017 в 19:02. |
|
![]() |
![]() |
![]() |
#25 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]()
Только ошибка оказалась не в коде, а в данных.
Хотя и в коде тоже, как выяснилось, есть. Код:
то '\0' также перепишется. Как вариант: Код:
Последний раз редактировалось Croessmah; 14.10.2017 в 19:06. |
![]() |
![]() |
![]() |
#26 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]()
Ну и используйте std::string, зачем Вам возня с char*?
многие присутствующие оптимизации в std::string, вполне возможно, сделают код быстрее и эффективнее (а может и нет)))). Например, gcc (емнип), сравнивает строки не по символам, а более большими кусками (int'ами, вроде). А при коротких строках (например, до 15 символов, включительно), может быть применена оптимизация SSO, которая исключит динамическую аллокацию памяти под строку. Последний раз редактировалось Croessmah; 14.10.2017 в 19:18. |
![]() |
![]() |
![]() |
#27 | |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
![]()
Но это меня удивило.
Цитата:
Как он вообще работает? в вычислении индекса он инкрементирует i, а в присваивании — нет... Последний раз редактировалось Haric_110; 14.10.2017 в 19:34. |
|
![]() |
![]() |
![]() |
#28 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
![]()
Мне нужно преобразовать строки в массив чисел и с ними работать, а не с символами. Библиотеки плохо знаю — мой главный недостаток.
Строки длиной до миллиона будут, так что, скорее всего, это не сработает... но я учту на будущее. Последний раз редактировалось Haric_110; 14.10.2017 в 19:28. |
![]() |
![]() |
![]() |
#29 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]() Цитата:
Это ошибка программиста, он не знает правила C++. А вот компиляторы эти правила знают. ![]() Ошибка в том, что одна и та же переменная используется и изменяется в одном выражении. И вот порядок этих изменений и использования в данном случае не определен. Распишем то, как компилятор может переделать это выражение: Код:
Хоть точки следования несколько устаревшее понятие, но смысл тот же. Последний раз редактировалось Croessmah; 14.10.2017 в 19:32. Причина: дополнил |
|
![]() |
![]() |
![]() |
#30 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
![]()
Первый вариант мне кажется логичным, я думал, так все и работают, а второй — нет.
Надеюсь, мне не придётся работать с компилятором, который будет думать не так, как думаю я) Чёрт, я разочарован... |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Утечка памяти [Освобождение памяти массива] | denis76560 | Общие вопросы Delphi | 4 | 27.11.2016 18:20 |
Объявление динамического двумерного массива | kineziz | Общие вопросы C/C++ | 4 | 27.05.2012 15:40 |
Освобождение памяти под динамический массив | tsar_ | Общие вопросы Delphi | 7 | 24.12.2011 00:37 |
Матрица из двумерного динамического массива. | Abrokadawr | Фриланс | 5 | 03.11.2011 22:28 |
Освобождение динамического массива? | VintProg | Общие вопросы Delphi | 15 | 28.08.2009 10:41 |