Получение ошибки компиляции в стандартном коде или внутренней ошибки компиляции более вероятно, чем ошибочные оптимизаторы. Но я слышал, что компиляторы оптимизируют циклы, неправильно забывая некоторые побочные эффекты, вызываемые методом.
У меня нет предложений о том, как узнать, если это вы или компилятор. Вы можете попробовать другой компилятор.
Однажды мне стало интересно, был ли это мой код или нет, и кто-то предложил мне valgrind. Я потратил 5 или 10 минут, чтобы запустить свою программу с ним (я думаю,valgrind --leak-check=yes myprog arg1 arg2
сделал это, но я играл с другими вариантами), и она сразу показала мне ОДНУ линию, которая проходила под одним конкретным случаем, который был проблемой. Тогда мое приложение работало без ошибок, без каких-либо странных сбоев, ошибок или странного поведения. valgrind или другой подобный инструмент - это хороший способ узнать, является ли он вашим кодом.
Примечание: однажды я удивился, почему производительность моего приложения отстой. Оказалось, что все мои проблемы с производительностью были в одной строке. Я написал for(int i=0; i<strlen(sz); ++i) {
. СЗ было несколько мб. По какой-то причине компилятор запускается каждый раз, даже после оптимизации. Одна строка может иметь большое значение. От выступлений до сбоев