|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.07.2015, 13:10 | #1 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Прострел памяти
Здравствуйте.
Использую большое количество операций new delete, в общем программа работает (с небольшим количеством объектов), но при увеличении количества объектов (классов) с которыми работает программа, происходит segmentation fault. Проблема в простреле памяти как мне подсказали. Если я полностью заменю new delete на std::vector поможет ли мне это? |
12.07.2015, 13:39 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А ты хоть спросил что это означает?
I'm learning to live...
|
12.07.2015, 14:28 | #3 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Тут прочитал
http://stackoverflow.com/questions/1...a-memory-stomp В общем одни данные перекрывают другие данные. В моём случае простреливает тот участок памяти где находиться код. Например Код:
|
12.07.2015, 14:58 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Чтот мне слабо верится, что обычное распределение в куче даст "прострелы".
Я бы вообще-то эту проблему назвал как переполнение стека, ну да ладно. ИМХО проблема не в распределении памяти, как ты решил, а в том, как ты ее используешь. Так то конечно STL поудобнее будет, но не факт что решит твою проблему.
I'm learning to live...
|
12.07.2015, 15:42 | #5 | |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Цитата:
Вот код выделения памяти для Вершин модели (кроме вершин в программе точно также выделяется память для текстурных координат, весов, костей и индексов всего этого) Код:
|
|
12.07.2015, 15:48 | #6 | |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
std::vector поможет в освобождении памяти, если эта проблема связанна с этим. Но он не поможет, если Вы где-то выходите за границу выделенной памяти.
Считаю, что нужно найти место, в котором происходит segmentation fault, тогда и станет все понятно. Цитата:
Я вот только не понял, какое отношение выделение памяти имеет к стеку? Мы же не в стеке выделяем ее.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Последний раз редактировалось Stilet; 12.07.2015 в 16:35. |
|
12.07.2015, 16:38 | #7 | ||
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Цитата:
После того как выделяю память, помещаю данные в VBO VAO, то есть в память видеокарты и сразу же удаляю delete [] Vertices; Вот и всё использование. Прочитал про выход за пределы стека. До этого стек для меня был обычным массивом. Цитата:
Последний раз редактировалось Stilet; 13.07.2015 в 08:11. |
||
12.07.2015, 23:23 | #8 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Когда программа запущенна под отладчиком и в ходе выполнения произошло какое-то исключение, то у меня IDE показывает это место и выбивает ошибку следующего содержимого:
error.png Такую ошибку получаю, если выполняю этот код: Код:
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
13.07.2015, 09:57 | #9 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Ну правильно, это запись в неправильный адрес.
|
13.07.2015, 15:58 | #10 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
Ну так отладчик же должен показывать все исключения? Или я ошибаюсь?
Это я привел пример с Qt Creator'a.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Памяти | 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 |