- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
ㅌㄹ ㄱㅌ ; Помещаем в BX текущее значение регистра ES <───────┐
ㅈㅿ ; Загружаем младший байт регистра флагов в AH │
; │
ㅊㅋ ; В пару ES:DI кладем то, что сейчас находится в AX │
; |
ㄹㅅ ; Дважды увеличиваем значение регистра DI |
ㄹㅅ ; на одну единицу |
; │
ㅎㅋ ㅿㅈ ; Образуем бесконечный цикл >───────┘
Господа, ОНО вернулось. Следующая итерация всеми нами любимого и восхваляемого [имя, которое нель̸̗̠̘̘̪̳̩зя произносить]. Я б̞̫͔̜ы на вашем ме̤̣̺͇̫с̨͈те покинул стр̵а̻̘̪̙͎̳̕н̬̙̤̙̪̝̺͠ицу. С̫е̜й̱͎ч̦̦̝͔а̙͓͓с̛̩̞̘ ̫̹͙̲̤̖͉ж̶͉̻е҉̼̦.
да.
> Почему компилятор не ругается?
Потому что проблема останова не разрешима. А вдруг c_str() иногда возвращает nullptr или статическую пустую строку, тогда никакого UB не будет.
В дебаге или в релизе?
Теперь ты спокоен?
У тебя неправильный посыл.
Вся суть сишки и плюсцов в том, что компилятор имеет полное право считать, что НИКАКОГО UB В ПРОГРАММЕ НЕТ. Программист — царь, он сделал всё правильно, и исходя из этого компилятор может делать кучу оптимизаций. Поэтому когда компилятор видит твою строчку, он думает не "опа, УБ!", а "опа, господин позаботился о том, что в этом выражении нет УБ, как мне это оптимизнуть?".
Ладно, статическая строка (даже непустая) - это понятно.
А вот nullptr - это реальность c_str или обобщение случая до произвольной функции?
Или у std::string в области значений есть не только "", но и NULL?
Должен вернуть то же самое. По крайней мере, явно инициализируется пустой строкой, а не нулевым указателем.
Кстати, не сразу заметил, что там "_", поначалу думал, что "e" в "gray".
В это можно только уверовать. А те, кто верит, что я не чья-то файка, об этом не спрашивают, им и доказательств не нужно.
> Почему компилятор не ругается
Он не знает что вернул c_str(). Может быть там копия strdup'нутая и всё ок...
А почему так?
c_str специально реализован так, чтобы у std::string с небольшой вероятностью вызывался strdup и текла память?
Или оптимизатор после всех преобразований уже код c_str очень слабо видит и не помнит, что там за функция была?
Ну а строка - это же шаблонная питушня -- более открытая, чем другое.
В общем, печально, что не знает.
> даже апкейсу нельзя доверять
После слова ДАЖЕ идёт более сложная задача. В случае с валютами ведь нет проблем с кодировками, хуё-моё. Расставил пробелы и точку или запятую и всё. Апкейст-то похардовее будет.