Является ли их любая программа на C ++, которая может максимизировать использование памяти, пока не достигнет «дампа памяти» (синий экран, а затем перезапустить). Просто любопытно, чтобы сделать это на Windows XP.
Что для этого требуется?
Может ли неограниченный цикл с умножением или сложением максимизировать использование памяти? Я думаю нет. Это просто увеличивает загрузку процессора (но, к сожалению, не до 10-20%). Тогда какой путь?
Память используется при выделении переменных. Самый быстрый способ — либо выделить действительно большой массив заранее, либо использовать new
или же malloc
внутри цикла:
while (true)
{
new int[10000];
}
это в конечном итоге вызовет исключение, когда у вас закончится память.
Если вы хотите съесть всю доступную память, просто сделайте это:
int main()
{
while(true)
{
char *buffer=new char[1024];
}
return 0;
}
Это съест память в 1K кусках. Однако все, что это сделает, — это задействует всю виртуальную память, доступную вашему процессу (около 2 ГБ в 32-битной Windows), после чего ваша программа упадет и умрет, не затронув никого другого.
Если вы хотите написать что-то, что приведет к падению Windows при нехватке памяти, вам нужно будет запустить свой код в пространстве ядра, поэтому вам нужно будет написать что-то вроде драйвера устройства.