Это сложный вопрос C, заданный в интервью: Напишите программу, которая ничего не делает, даже не занимая память.
Можно ли это сделать?
Это сложный вопрос C, заданный в интервью: Напишите программу, которая ничего не делает, даже не занимая память.
Можно ли это сделать?
Все программы используют память. Когда вы запускаете программу, ОС будет устанавливать адресное пространство для программы, скопировать ее аргументы в пространство процесса, дать ему идентификатор процесса и поток, дать ему некоторые дескрипторы файлов для ввода-вывода и т.д. Даже если ваш программа немедленно прекращает работу, вы все еще используете эту память и время процессора.
Нет, это невозможно. Код и стек должны идти куда-то, и он будет почти всегда находиться в памяти.
Игнорируя, что, конечно, довольно просто написать приложение, которое сразу же выходит.
ваш ответ должен быть в порядке, задавая вопрос о том, "почему" вы хотели бы сделать такое. это показало бы широту для размышлений вне вопроса.
На первый взгляд вопрос, кажется, имеет простой ответ: "Нет, это невозможно". @templatetypedef дал некоторые причины.
Но, возможно, дело в том, чтобы посмотреть, как вы его решаете. Вы можете получить "отметки" для запроса "какой памяти" или для наблюдения за некоторыми точками, которые сделал @templatetypedef. Или для показа пустого метода main(), данного @Mihran Hovsepyan, а затем объясняя, что какая-то память будет задействована даже в этом минимальном случае.
Хотя при запуске программы будет выделена какая-то память, большинство людей не знают, что main() не является реальной точкой входа в программу. mainCRTStartup, по крайней мере, в консольном приложении Windows. Если вы создаете программу с реальной точкой входа, вы избежите процедур инициализации кучи, разбора аргументов аргументов, инициализации глобальной переменной и т.д.
Итак, в некотором смысле, вы можете сделать программу, которая позволяет избежать кучи управления и прочее. Но ОС все равно будет читать его в памяти.
Смотрите: http://www.catch22.net/tuts/minexe
Пустая программа - это программа, не так ли?
Ниже моя программа использования ресурсов:)
Также обратите внимание. Строго говоря, программа действительно не потребляет какой-либо ресурс, пока ОС не загрузит его и не запустит. Когда это произойдет, мы называем это процессом.
Правильный ответ заключается в том, что он специфичен для реализации. Реализация может поддерживать нулевые программы, а механизм execve
(или эквивалентный) может выполнять эквивалент _Exit(0)
, когда он встречается с ним, но на практике это не так.