maisvendoo |
|
![]()
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
Толком не сплю уже неделю - отлаживаю один алгоритм. И вот только он подал признаки жизни и пришла пора тестировать на серьезных вещах - вот вам пожалуйста - сабж Имеется участок кода
Ошибка возникает при nv = 18 в строке
При nv = 17 все работает. Анализ крэша в отладчике дает стек вызовов из которого понятно, что падает все на вызове malloc().
Если инструкцию, вызывающую сбой убрать, при nv=18 сбой возникает на любой другом, следующим за ним операторе new. Короче говоря я в шоке P. S.: Забыл приложить код вызываемых функций
и описание используемых типов
Точно выяснено - ошибка зависит от того, сколько динамической памяти выделено перед роковым вызовом. Неужели при имеется ограничение на размер кучи???
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
cucullus |
|
![]()
Темы:
256
Сообщения:
3435
Участник с: 06 июня 2007
|
Вы можете сказать, что я не по теме, и будете отчасти правы. Но stl векторы как раз и предназначены для того, чтобы не копаться в таком коде. Дополнительного огонька подливают дополнительные выделения памяти для многомерных матриц. Я давно пришёл к конструкциям вида a[y*xsize+x]. Впрочем, это, оффтоп. Код не читал, ибо подобного рода нагромождения не вдохновляют... PS Разве что бросилась в глаза эта конструкция:
Сочетание "i<nr" и "[i+1] =" обычно не сулит ничего хорошего ;)
такие дела.
|
kurych |
|
Темы:
0
Сообщения:
1394
Участник с: 06 ноября 2011
|
Вроде как далеко ходить не надо. Уже в самом начале кодаmaisvendoo nb = 3*nv - 2; и размер m[] соответствующий, а в цикле идет обращение к m[k+2], где в максимуме достигает к=3*(nv-1)+2, что заведомо выходит за границы выделенной для массива памяти, потому что 3*(nv-1)+2 = 3*nv-3+2 = 3*nv-1 3*nv-2 < 3*nv-1 Ну а дальше вы огребаете последствия обращения за границы выделенной памяти. |
maisvendoo |
|
![]()
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
kurych, спасибо что не поленились посмотреть. Я замыленным взглядом пропустил бы - неделю в разнообразных отладках а сроки жмут. Исправил это на
и заработало не только это, а правильно стали вычислятся все силы. Огромное человеческое спасибо :) P.S.: Динамическая память такая динамическая :) P.P.S.: Хотя с силами я поторопился, но это уже другой специфичный вопрос...
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
![]()
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
Получил вот такой график![]() По заявлению руководителя это "то что надо", да я и сам это понимаю. Хочу поблагодарить откликнувшихся на сабж людей, без вас нашел бы ошибку но не сегодня. А ложка, как известно, дорога к обеду. Хорошо, что у нас такое сообщество :)
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
cucullus |
|
![]()
Темы:
256
Сообщения:
3435
Участник с: 06 июня 2007
|
оси не подписаны!
такие дела.
|
maisvendoo |
|
![]()
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
cucullusРабочий вариант. Не оформил ещё. А так у меня есть самописная библиотека которая генерирует в латэхе красивый отчет. Не прикрутил ещё к этому проекту, не успел
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
![]()
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
Ну, вот с подписанными осями после доводки )![]()
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
cucullus |
|
![]()
Темы:
256
Сообщения:
3435
Участник с: 06 июня 2007
|
крысота! легенда, правда, напрашивается в правый верхний угол. А что есть отрицательная тяга? Это же не пневмоторможение? Включение заднего хода? В случае штатного торможения такой колбасни быть не должно вроде. (В сферическом поезде с одинаковыми по весу вагонами). Если поезд натянут "в струнку" (а он только что был под тягой, значит так и должно быть) при идеальном торможении вообще не должно быть биений по идее.
такие дела.
|
maisvendoo |
|
![]()
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
cucullusРекуперация или реостатное торможение. Двигатели переводятся в генераторный режим и отдают энергию либо в сеть, либо на тормозные резисторы. Конечно, так никто не рекуперирует особенно на грузовых. Но этот результат - тест модели.
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |