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