![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
greykardinal |
|
||||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Добрый день
Написал программу работы с текстовым файлом. Программа читает данные из файла, сортирует их , преобразует в число и раскладывает в двумерный массив. Размер файла неизвестен, поэтому все размеры динамические. Привожу код выделения памяти
Проблема такая: Code Guard ругается на следующий участок кода:
пишет "Attempt to access 11 bytes at ..., that is at heap bloc which is only 10 bytes long" То бишь ему требуется на один байт больше чем я выделил. Но если выделить больше байт (1000) проблема не решается. ![]() Подскажите, в чем моя ошибка. Извините если тема ранее поднималась. |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
greykardinal, пройдись отладчиком. Наверняка L больше 10.
|
|||
|
||||
greykardinal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
bsa, не понял причем тут L - это же другой размер массива. L должно быть не больше Len. Так то L больше 10
Это сообщение отредактировал(а) greykardinal - 1.6.2011, 14:02 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
greykardinal, ругается у тебя на Wx[i], значит (если указатель Wx не меняется) i выходит за границу выделенной области. В цикле у тебя i от 0 до L невключительно. Значит, выход за груницу возможен, когда L больше Len.
Это сообщение отредактировал(а) bsa - 1.6.2011, 14:57 |
|||
|
||||
greykardinal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
bsa, согласен, возможно. Но я проверяю условие Len>L до приведенного кода. Если L>Len, то программа завершается принудительно. Тут все чисто
![]() Это сообщение отредактировал(а) greykardinal - 1.6.2011, 15:55 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Полагаю, что ругается на atof - Wx[i] это строка, и у ТС она явно не терминированна 0
|
|||
|
||||
greykardinal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
xvr, ругается именно на atof. Действительно, строка не терминирована. Спасибо за подсказку ![]() P.S. Подскажите, как исправить код, а то я никогда на подобное внимания не обращал и не знаю, что менять - может код выделения памяти, может сам тип данных? Это сообщение отредактировал(а) greykardinal - 2.6.2011, 05:31 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
greykardinal, выдели память под Len+1 чаров, и сделай Wx[Len] = '\0'; после выделения.
|
|||
|
||||
greykardinal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
bsa, все равно ругается на строчку
Пишет, что пытаюсь использовать 11 байт, а выделил только 10 Ругается уже при i=0 Это сообщение отредактировал(а) greykardinal - 2.6.2011, 10:23 |
|||
|
||||
greykardinal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Попробовал vector - не получилось, std-ишные функции тоже не катят. Че делать - не знаю
![]() Добавлено через 14 минут и 21 секунду все, решил. ![]() bsa, xvr, большое спасибо за помощь ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |