|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.10.2017, 18:43 | #21 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Вообще, что такое n и зачем оно нужно?
Если это максимальная длина слова в файле, то не забудьте, что еще должен быть '\0' в конце, т.е. резервировать нужно n + 1 байт на слово. И работайте с заранее подготовленным и проверенным файлом, чтобы исключить ошибки связанные с генерацией данных. Последний раз редактировалось Croessmah; 14.10.2017 в 18:52. |
14.10.2017, 18:51 | #22 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Функцию забыл убрать просто... это не решает проблему, но если убрать всё, кроме выделения и освобождения памяти, то ок.
Значит, ошибка в заполнении массива. Хорошо. В чём может быть проблема? Может, в считывании Код:
не литералом '\0' всё завершается? Смотрю - вроде, нет... |
14.10.2017, 18:55 | #23 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
|
14.10.2017, 18:59 | #24 | |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Цитата:
Спасибо! Говорил же, что ошибка очень проста) Последний раз редактировалось Haric_110; 14.10.2017 в 19:02. |
|
14.10.2017, 19:03 | #25 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Только ошибка оказалась не в коде, а в данных.
Хотя и в коде тоже, как выяснилось, есть. Код:
то '\0' также перепишется. Как вариант: Код:
Последний раз редактировалось Croessmah; 14.10.2017 в 19:06. |
14.10.2017, 19:10 | #26 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Ну и используйте std::string, зачем Вам возня с char*?
многие присутствующие оптимизации в std::string, вполне возможно, сделают код быстрее и эффективнее (а может и нет)))). Например, gcc (емнип), сравнивает строки не по символам, а более большими кусками (int'ами, вроде). А при коротких строках (например, до 15 символов, включительно), может быть применена оптимизация SSO, которая исключит динамическую аллокацию памяти под строку. Последний раз редактировалось Croessmah; 14.10.2017 в 19:18. |
14.10.2017, 19:12 | #27 | |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Но это меня удивило.
Цитата:
Как он вообще работает? в вычислении индекса он инкрементирует i, а в присваивании — нет... Последний раз редактировалось Haric_110; 14.10.2017 в 19:34. |
|
14.10.2017, 19:23 | #28 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Мне нужно преобразовать строки в массив чисел и с ними работать, а не с символами. Библиотеки плохо знаю — мой главный недостаток.
Строки длиной до миллиона будут, так что, скорее всего, это не сработает... но я учту на будущее. Последний раз редактировалось Haric_110; 14.10.2017 в 19:28. |
14.10.2017, 19:24 | #29 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Цитата:
Это ошибка программиста, он не знает правила C++. А вот компиляторы эти правила знают. Ошибка в том, что одна и та же переменная используется и изменяется в одном выражении. И вот порядок этих изменений и использования в данном случае не определен. Распишем то, как компилятор может переделать это выражение: Код:
Хоть точки следования несколько устаревшее понятие, но смысл тот же. Последний раз редактировалось Croessmah; 14.10.2017 в 19:32. Причина: дополнил |
|
14.10.2017, 19:54 | #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 |