2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 52
|
||||||
1 | ||||||
Необработанное исключение в "0x1027c9c7 (msvcr100d.dll)" в "gh.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefeee".12.11.2011, 23:42. Показов 4361. Ответов 7
Метки нет Все метки)
(
Прошелся отладчиком - нашел где вылетает, я ее пометил коментарием: ВОТ ТУТ ВЫЛЕТАЕТ ОШИБКА! Подскажите пожалуйста в чем ошибка??
0
|
|
12.11.2011, 23:42 | |
Ответы с готовыми решениями:
7
Необработанное исключение в "0x0fc1d484 (msvcr100d.dll)" в "1.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00aee0af" Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". Необработанное исключение в "0x775e15de" в "laba3.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfdf9". Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004". |
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
13.11.2011, 00:08 | 2 |
Вы залезли в чужую память.
Вы уверены, что comp имеет размер как минимум *countCom?
0
|
2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 52
|
|||||||||||
13.11.2011, 00:50 [ТС] | 3 | ||||||||||
Вроде да. И главное я воспроизвел все связанное с этой частью кода в новом проекте - все работает на ура. А с полной программой - нивкакую =(
Добавлено через 27 минут Посмотрите - вот еще я заметил, что если эту часть кода:
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
13.11.2011, 00:54 | 5 |
Значит плохо проверили.
1
|
Заблокирован
|
|||||||||||
13.11.2011, 01:34 | 6 | ||||||||||
iron-mik , сейчас найдём)
Я колебался вводить данные для этих компаний) Реально, на этапе тестирования и разработки - сделали бы хотя бы времянку, которая сама бы быстро забивала все данные. Что б не приходилось вручную все набивать по новой каждый раз. Добавлено через 18 минут ошибку пока не нашёл. Но нашёл утечку памяти:
Всё! Нашёл ошибку. Я сам неоднократно горел на подобных типах ошибок. Они коварные. Вот эта ошибка очень хорошо иллюстрирует неочевидность человечьей логики. Сначала напишу что конкретно было не так. Потом опишу почему именно не так: Вот исправленный вариант функции
Это - не указатель, это - ссылка на указатель. Чем отличается ссылка на указатель от указателя? Аргументы функций всегда дублируются. Внутри функции участвуют не оригинальные аргументы, а их копии. ВСЕГДА Но Если ты изменишь значение ссылки - изменится значение оригинала, на которого она указывает. У тебя внутри функции существовала копия указателя. Ты убивал данные по этому указателю, а потом пересоздавал массив. При этом ты модифицировал копию указателя, а не оригинал. После чего функция возвращала управление вызывающей стороне, где по прежнему продолжал сушествовать оригинальный указатель, который понятия не имеет, что данные были перемещены по новому адресу. Он попрежнему указывает уже на чужую память. Обращение к данным по такому указателю и приводило к крушению.
1
|
2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 52
|
|
13.11.2011, 10:30 [ТС] | 7 |
Спасибо большое! Все работает! Теперь я понял... :dance3:
0
|
Заблокирован
|
|
13.11.2011, 19:08 | 8 |
утечку памяти исправить не забудь)
0
|