2014-01-10 38 views
0

它們是C++中的任何程序,它可以最大限度地利用內存,直到達到「內存轉儲」(藍屏然後重啓)。只是好奇,在Windows XP上做到這一點。 它需要什麼? 帶有乘法或加法的無限循環是否可以最大限度地利用內存?我想不是。它只是增加CPU使用率(但不幸的是不高達10-20%)。那麼最新的方式?最大限度地利用內存

回答

1

分配變量時會使用內存。最快的方法是要麼分配一個真正的大陣列的前期或使用newmalloc一個循環中:

while (true) 
{ 
    new int[10000]; 
} 

當你耗盡內存,這將最終拋出異常。

+0

至少在因爲地址空間碎片的32位的Windows,可能難以分配>〜1.2 GB的單個塊。儘管總容量接近2GB的小塊將會成功。 – drescherjm

+0

寫入這些位置可能會更快。現代操作系統在數據寫入虛擬內存之前不需要分配物理頁面。 – JeremyP

1

如果你看吃了所有的可用內存則只是這樣做:

int main() 
{ 
    while(true) 
    { 
    char *buffer=new char[1024]; 
    } 

    return 0; 
} 

這將在1K塊吃內存。但是,所有這些都會導致您的進程可以使用所有虛擬內存(32位Windows上大約2GB),此時您的程序會崩潰並死亡,而不會影響其他任何人。

如果你正在尋找,當它運行的內存,那麼你就需要運行在內核空間的代碼寫的東西,這將導致Windows摔倒,所以你需要寫類似的設備驅動程序。

相關問題