В зависимости от операционной системы и / или архитектуры вы можете или не можете писать на исполняемые страницы.
Проверьте документацию о маркировке страниц как исполняемых или доступных только для чтения в руководствах Intel (IA-32e). Код может находиться в разделе «только для чтения», поэтому вы не можете писать в него.
Вы можете пометить код как не принадлежащий только для чтения страниц, но он зависит от компилятора (JIT-компиляторы делают это).
В MSVC вы можете использовать # прагматический раздел , чтобы создать раздел для чтения и записи, и использовать # pragma alloc_text для помещения в него функций.