FPC не может выполнять такую оптимизацию на данный момент, а afaik даже с C++ они входят в «неопределенный» класс. (так как состояние программы из-за этой оптимизации игнорирует то, что говорит программист)
Решение такой проблемы - вопрос определения, какие конструкции можно оптимизировать, а какие нет. Он не нуждается в помощи API/ОС как таковой, любой связанный с внешним объектом объектный файл с такой функцией будет делать (с тех пор глобальная оптимизация не коснется его)
Обратите внимание, что статья не называет компилятор C++, поэтому я ожидаю, что это более общая функция функции, когда пользователь компилятора попадает в проблемы, не слишком сильно ударяя документы, или когда он должен легко работать с несколькими компиляторами (только для Windows!), не слишком усложняя сборку.
Выбор функции non-inlinable API может быть не оптимальным в других случаях, особенно с небольшими, постоянными размерами до нуля, поскольку он не будет встроен, поэтому я буду осторожен с этой функцией и убедитесь, что есть Жесткая потребность
Это может быть важно, главным образом, когда внешний объект может изменять память (DMA, сопоставление памяти и т. д.) программы или стирать пароли и другую конфиденциальную информацию из образа памяти, даже если программа в соответствии с компилятором никогда не прочитает его
Delphi компилятор, конечно, не может сделать эту оптимизацию, не знаю о FPC –
FillChar определенно не оптимизирован. Во всяком случае, оптимизация никогда не должна меняться, и начинка памяти - такой результат. –
@RudyVelthuis Код, который записывает переменные, которые впоследствии не могут быть прочитаны, может быть оптимизирован. Вот почему существует «SecureZeroMemory». –