|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.07.2015, 16:00 | #11 |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
Откуда отладчик должен знать, валидный у вас адрес, или нет? Это рантайм ошибки.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
|
13.07.2015, 16:38 | #12 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Наверно неправильно написал. Я имел в виду, что программа, запущенная под отладчиком, при возникновении любого исключения должна остановиться на месте этого исключения, и показать какое произошло исключение. Или я ошибаюсь?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
13.07.2015, 16:42 | #13 |
ios developer
Старожил
Регистрация: 16.11.2007
Сообщений: 2,885
|
Если среда умеет брякаться на ассемблерном коде, то да. И то, она покажет именно то место, где произошла запись/чтение в/из адреса, а вовсе не то, где адрес перестал быть валидным. Мало того, к тому времени, как среда брякнется, того объекта, который должен быть на этом месте, уже в природе может не существовать. Тут важно понимать, что исключение произошло не там, где вы накосячили в коде а там, где вылезли последствия этого косяка. По стектрейсу иногда можно что-то понять, но опять же, только иногда. Самый муторный в отладке тип ошибок.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!
Последний раз редактировалось crazy horse; 13.07.2015 в 16:54. |
13.07.2015, 19:55 | #14 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Не обязательно на ассемблерном, у меня Qt Creator может показывать как в коде проекта, так и в ассемблерном коде, если не может показать в коде из-за использования каких-либо библиотек.
Но зная место, где происходит исключение, уже можно будет хоть что-то понять.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
14.07.2015, 17:10 | #15 |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
Вы указатель приравниваете в NULL и следом пытаетесь его разыменовывать и докучи изменить его содержимое... в релизе это приведёт к вылету....
P.S: не советую использовать рекурсию при обработки столь много полигональной модели, переполнение стека влечёт к вылету, а размер стека на каждой машине разный.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Последний раз редактировалось Perchik71; 14.07.2015 в 17:12. |
14.07.2015, 20:37 | #16 | |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Цитата:
Читал что выход за пределы стека может происходить из-за большого числа вложенных функций. Опишу количество вложенных функций у меня (незнаю правильно ли я понял что такое вложенные функции). Есть главный класс, он загружает другой класс(класс который управляет моделями), потом загружается класс самой 3д модели, далее загружается ещё один класс с дополнительными 3д моделями (на этом последнем классе и вылетает). Когда я говорю загружает это значит запускается функция загрузки. То есть вложенных функций получается 4. Вроде бы не очень много, а от чего-то вылетает. Влияет ли количество кода в функциях на стек или на стек влияет только количество переменных? Ато кода в этих функциях у меня много. Уже и не знаю где ещё искать. |
|
14.07.2015, 21:03 | #17 |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
это всё хрень...
загрузка данных одного типа можно достичь путём рекурсии Код:
P.S: рекурсия это вызов функции внутри себя, накапливается стек переменных, что отправляете... потом цепочкой все отгружается P.S.S: приведите Ваше решение сюда
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Последний раз редактировалось Perchik71; 14.07.2015 в 21:06. |
14.07.2015, 21:49 | #18 | ||
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Цитата:
Цитата:
Код:
Да и я не уверен, что проблема именно в переполнении стека.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Последний раз редактировалось Krasiosoft; 14.07.2015 в 21:53. |
||
15.07.2015, 05:13 | #19 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Вот так загружаю дополнительные модели.
Код:
Код:
CurStr = persplus + CurStr; Ещё когда много 3д моделей, у меня вылетает на одной из четырёх анимаций, то есть один тип анимации не работает. Тут вылетает time2 = fabs((anbone[i].time[0] * 500) - timeArr[AnimationShagFrame]); Ну и когда я что-то поменял, не помню уже что вылетало как я указал в посте №3. То есть если я изменяю код, удаляю те места где происходил вылет, вылетает уже в другом месте. |
15.07.2015, 09:00 | #20 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Т.е. вы показали нам как выделяете массив Weapon а потом жалуетесь, что валится при работе с массивом newindeces и от нас требуется догадаться в чем проблема?
Подсказка - наличие typecast свидетельствует о проблеме. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Памяти | VladimirAvakov | Общие вопросы C/C++ | 0 | 28.05.2014 23:01 |
Задача-найти объем оперативной памяти по шестнадцатеричному адресу последнего байта оперативной памяти | Ksana Alex | Помощь студентам | 4 | 14.11.2013 15:51 |
Распределение памяти. Динамическое выделение памяти с++ | Tolian92 | Помощь студентам | 8 | 14.05.2012 21:44 |
Программа для тестирования памяти, тестирование ячеек памяти | Hunter557 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 30.01.2011 19:20 |
Кольцевая очередь на массиве в статической памяти с элементами в динамической памяти | ]tach[ | Общие вопросы C/C++ | 1 | 19.01.2011 13:16 |