|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.08.2009, 19:59 | #1 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
Ссылочные массивы и сегментатион фаулт.
P.S. Вроде вопрос не столько по QT, сколько общий.
Вообщем для манипулирования объектами сцены я создал ссылочный массив QGraphicsItem * s[15][25] куда кидаю адреса элементов сцены. Всё работает нормально. Но при удалении самих элементов, на которые ссылается массив - всё больше увеличивается вероятность сегментатион фаулта. (повторных обращений к удалённым элементам не происходит) Присваивал я таким образом: QGraphicsItem *item; s[y][x] = item; |
26.08.2009, 20:32 | #2 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
Нет, это не с этим связано.
|
27.08.2009, 08:53 | #3 |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
так такого вида массивы должны размещаться в стеке, а ты их ешо удаляешь, стек будет нарушен и в каком месте может вылетить. не удаляй их из памяти, сами удаляться! только динамический массив программист очищает сам
|
27.08.2009, 09:34 | #4 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
lennon
Там ничего не нарушено, ведь в массиве только адреса на элементы. В чём хранятся элементы, я не знаю - сиё покрыто тайной. Но удаляю я их средствами сцены потому всё ништяк. Проблема в операции +=. Она иногда не работает. ))) P.S. Не допёр, почему такие массивы должны находиться в стэке? |
27.08.2009, 10:13 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
[QUOTE]Не допёр, почему такие массивы должны находиться в стэке?[QUOTE] Наверное Леннон имел ввиду что ты эти массивы как локальные обьявляешь.
I'm learning to live...
|
|
27.08.2009, 10:16 | #6 | |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
Stilet
Цитата:
|
|
27.08.2009, 10:30 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Не. Наксерачил - убери.
I'm learning to live...
|
|
27.08.2009, 10:47 | #8 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
Stilet
int f[2][2] = nil. Уберёт из массива ссылку? |
27.08.2009, 10:56 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну разве что
f[2][2] = NULL лучше. А потом проверки на NULL естественно.
I'm learning to live...
|
27.08.2009, 11:25 | #10 | |
Заблокирован
Регистрация: 18.11.2007
Сообщений: 254
|
Цитата:
и вообще разве память выделиться в куче при таком объявлении QGraphicsItem * s[15][25]? даже если тут и стоит указатель то это значит только то, что в стеке будет находиться 15*25 этих самих адрессов, которые нужно инициализоровать в куче. место для них выделиться в стеке, а стек сам очищаеться, его НЕЛЬЗЯ ТРОГАТЬ!!! а стоп... я туплю... автор же удаляет сами указатели из массива. а зачем ты их удаляешь? когда класс выходит из области видимости он сам вызыват деструктор, его нежно удалять. темб олее ты незнаешь как работает этот класс, может нельзя его блин удалять!!! место выделеное под него совободиться само. обычно в классах есть функция которая его удалит из памяти, толи drop толи free толи release. а разве память очиститься если присвоить укзателю нулевой адресс? я могу сказать что нет Последний раз редактировалось lennon; 27.08.2009 в 11:32. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ссылочные типы | senchakv | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 13.06.2009 21:50 |
Ссылочные типы | senchakv | Помощь студентам | 0 | 13.06.2009 21:41 |
встроеннные функции, ссылочные переменные | Dimarik | Общие вопросы C/C++ | 8 | 10.05.2009 11:46 |
Исправте программу.Ссылочные типы данных. Динамическая память | ромка) | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 30.05.2008 04:24 |
Ссылочные типы данных. Динамическая память/HELP!! | ромка) | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 22.05.2008 09:03 |