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