У меня есть программа, которая работает хорошо в отладочных, но когда я запускаю же с выпуском строить свои программы аварии на ниже линиивыпуск в Visual Studio 2012 релиз сборки
char* iter=ptr; //ptr is already initialized
char* iter = (char*) ALIGN (iter); // crashes here
У меня есть определение препроцессора, как показано ниже для ALIGN
Тип-литье указателей в длину.
#define SIZE 8L
#define ALIGN(ptr) \
(((__int64)ptr & (~(SIZE - 1L))) + SIZE) \
: (__int64)ptr)
Это дает только проблема, когда я запустить эту программу в Visual Studio 2012 в Windows 8, но отлично работает с Visual Studio 2012 в Windows 7. Я не знаю, какие флаги (возможно, флаги оптимизации), мы должны установить или отключить, чтобы моя программа работала в режиме деблокирования.
Пожалуйста, предложите мне решение
Эй, мои извинения, На самом деле я должен добавить одну строку. И когда он выходит из строя, он дает ошибку, например «Место для записи нарушения прав доступа». На самом деле эта программа отлично работает в режимах выпуска vc9 и vc10, но я не знаю, почему она не работает в режиме выпуска vc11 в Windows 8. –
@ user3021329 Потому что неопределенное поведение. –