Russian Qt Forum
Ноябрь 23, 2024, 11:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Мистический EXC_BAD_ACCESS [решено]  (Прочитано 7495 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Июнь 12, 2013, 15:21 »

Добрый день

Крашиится в последней строке
Код
C++ (Qt)
ssef temp1, temp2, temp3[10];
temp1 = temp2;
temp3[0].v[0] = 1;
std::cout << temp3[0] << " " << temp3 << std::endl; // <1, 0, 0, 0> 0xb03fecd4
 
temp3[0] = temp2; // EXC_BAD_ACCESS
 
Хедер ssef.h прилагаю. Мда, так меня еще не били Улыбающийся Пока не знаю в чем дело. А Вы?

Спасибо
« Последнее редактирование: Июнь 13, 2013, 15:17 от Igors » Записан
maint
Гость
« Ответ #1 : Июнь 12, 2013, 16:42 »

с каких это пор структуру структуре присваивать можно стало ?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #2 : Июнь 12, 2013, 16:52 »

с каких это пор структуру структуре присваивать можно стало ?
С момента рождения C++? Улыбающийся
Там даже конструктор копирования и оператор присваивания определен. Подмигивающий
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #3 : Июнь 12, 2013, 17:39 »

Ответа у меня нет. Что в нормальной ситуации ошибка означает вы наверняка и сами знаете.
Под отладкой смотрели? В operator= заходит? На присвоении крашится или на return *this?
Вообще у меня воображения кроме как на баг компилятора не хватает. Другим чем собирать не пробовали? Или с другими настройками оптимизации?
« Последнее редактирование: Июнь 12, 2013, 17:42 от LisandreL » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Июнь 12, 2013, 18:46 »

Вообще у меня воображения кроме как на баг компилятора не хватает.
Такое же мнение. Там инлайны во все поля, стоит смотреть код, который сделал компилятор. Что он там на оптимизировал. Можно попробовать собрать без оптимизации для проверки.
« Последнее редактирование: Июнь 12, 2013, 18:48 от Old » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Июнь 13, 2013, 10:01 »

Код в аттаче (добавил вызов отладчика "после" чтобы видно было где кончается). Конечно все без оптимизации. Откатываться на др компилятор - весьма накладно, много завязок. В др проекте этот же код (с этим же компилятором) работает успешно. Экспериментирую, будут результаты - отпишусь
Записан
Bepec
Гость
« Ответ #6 : Июнь 13, 2013, 10:08 »

Я б может и покопался, только нехватает хедеров и типов Веселый
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #7 : Июнь 13, 2013, 11:11 »

Код в аттаче (добавил вызов отладчика "после" чтобы видно было где кончается).
Интересно. А чему будет равен eax на строчку выше (после его установки)?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Июнь 13, 2013, 11:52 »

Интересно. А чему будет равен eax на строчку выше (после его установки)?
Тому самому что распечатался.

Вроде разобрался. Адрес должен быть кратен 16. Поменял выравнивание по умолчанию (было 4) - все норм. Почитаю еще про movaps и код 13, потом помечу как "решено"
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Июнь 13, 2013, 15:16 »

Да, movaps требует выровненных адресов. Хотя я не нашел что должно возбуждаться исключение 13, но видимо так.

Ну вот, оказывается серая действительность, бытовуха, никакой романтики  Плачущий
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #10 : Июнь 13, 2013, 16:12 »

Хотя я не нашел что должно возбуждаться исключение 13, но видимо так.
Первая же ссылка google на "movaps":
http://www.club155.ru/x86cmdsimd/MOVAPS
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Июнь 13, 2013, 17:30 »

Хотя я не нашел что должно возбуждаться исключение 13, но видимо так.
Первая же ссылка google на "movaps":
http://www.club155.ru/x86cmdsimd/MOVAPS
Именно там я и был Улыбающийся  Да, есть
Цитировать
#GP(0) при некорретном эффективном адресе операнда в памяти в сегментах CS, DS, ES, FS или GS, и для всех сегментов если операнд в памяти не выровнен по 16-байтным границам.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.253 секунд. Запросов: 23.