psilogic: (wpriz)
[personal profile] psilogic
Получил "access violation writing location..." Гляжу... все вроде нормально с кодом. Указатели смотрят не на мусор, сам код простой, ошибку сделать негде. Однако почему-то писать не позволяет. При этом проблема только с Release, Debug запускается нормально. И даже сборки на VS2010/2012 запускаются нормально - что в Release, что в Debug.

Бамбук курил долго. Вставлял отладочную пУчать туда и сюда. В ассемблере идет просто запись в адрес памяти, где лежат вполне валидные данные, причем, данные статические (в сегменте данных, а не в heap или стеке, так что это не ошибка распределения памяти и не порча стека). Возникла версия, что данные каким-то образом заносятся в сегмент .radata - там, где компилятор может класть read-only данные программы (константы). Но "больная" access violation-ом переменная совсем не const. Думаю: ну, VS2013 - свежий продукт, может, бага у них, которая проявляется при какой-нибудь оптимизации? Стал дергать опции оптимизации методом тыка - в какой-то момент ВНЕЗАПНО заработало. Стал возвращать их обратно, чтобы выяснить ту самую, которая...

...и тут, блин, натыкаюсь на свой фэйл.

Оказалось, указал не тот путь поиска .lib-ов, и ведет он на каталог, где собраны либы от VS2012. 13-я студия их, ничтоже сумняшеся, берет и юзает, собирая exe-шник с врожденной патологией.

Date: 2014-06-30 01:12 pm (UTC)
From: [identity profile] xyznaetkto.livejournal.com
Последние лет десять пишу только на C#, перед тем еще лет пять на Java. Плюсы и просто С впоминаю как кошмарный сон. Производительность разработчика там никакая. Именно из-за необходимости работы с памятью и вот таких вот периодических жоп вроде вами описанной, на раскопку которой может запросто уйти рабочий день.

Что за необходимость-то? У каких-нибудь старпёров на космос работаете, поддержкой ПО 60-х годов занимаетесь?

Date: 2014-06-30 01:28 pm (UTC)
From: [identity profile] psilogic.livejournal.com
наброс засчитан :)
Page generated Aug. 15th, 2025 04:44 am
Powered by Dreamwidth Studios