Если функция является зарезервированным набором команд в памяти, то могу ли я её удалить? Если да, то как?
Удалить функцию (кусок кода, то есть зарезервированный набор команд в памяти) из этой самой памяти вполне возможно. Но, как тут уже справедливо указали коллеги, таких механизмов непосредственно в языке С++ не предусмотрено. К счастью, такие механизмы обычно предусмотрены в операционных системах. В частности, во всеми любимой операционной системе Windows, предусмотрен механизм загрузки и выгрузки так называемых dll (dynamic link library).
Таким образом, если Вам надо попользоваться функцией, а потом удалить ее из памяти, то Вы должны (для OC Windows):
UPD1:
Тут коллеги спрашивают, зачем может понадобится удалять часть кода из памяти. Конечно, по нынешним временам мы избалованы изобилием ОЗУ и забыли страшное слово "оверлеи", хорошо знакомое тем, кто начинал во времена MS DOS. Но вполне можно представить себе ситуацию и сейчас, когда кода много, а используется он в режиме или/или. То есть после запуска программы и выбора режима работы пользователем приложение загружает нужную DLL и работает. После окончания работы DLL выгружается и приложение ждет выбора нового режима работы.
UPD2:
В связи с этим возникает интересный вопрос о фрагментации уже не кучи, а фрагментации области кода (по аналогии с фрагментацией кучи). Вполне возможно представить себе ситуацию, когда после долгой работы много загруженных и выгруженных маленьких DLL разобъют область кода на части и система не сможет загрузить большую DLL, несмотря на то, что общий размер свободной области будет превышать размер большой DLL.
С точки зрения языка C++ — нет, такого механизма не предусмотрено.
С точки зрения большинства реализаций — это гипотетически возможно, в зависимости от того что именно понимать под термином «удалить функцию», но довольно сложно и не имеет за собой особого практического смысла. Общая идея состоит в том чтобы во время исполнения затереть или заменить на заглушку область памяти на которую ссылается функция. т.к на большинстве современных платформ область памяти с исполняемым кодом защищена от записи, то придётся аллоцировать новую область память, копировать туда содержимое текущей, изменяя нужный участок, а потом переподключать её по старым адресам.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть ли готовый список шрифтов для html страницы, что бы можно было подключить в несколько строчек кода? Под список шрифтов я имею ввиду выпадающий...
Устанавливаю на сайт кнопку (html-ссылка) для запуска чата в Viber:
Я совсем начинающий, столкнулся с проблемой, решение которой найти в поиске не смог
Объясните, выделяется размер для следующей структуры