#include <iostream>
#include <cassert>
#include <vector>
#include <ctime>
#include <cstdlib>
#include <Windows.h>
using namespace std;
char randomLetter()
{
srand(time(0));
char rValue;
while(1)
if((rValue=(rand()/129)) > 31)
return rValue;
}
int main()
{
vector<char> meegaString;
for(int i=0; i < 10000000000; i++)
{
meegaString.push_back(randomLetter());
if(!(i%10000000))
cout<<"There are: " <<i+1<<" chars in the list"<<endl;
}
system("pause");
return 0;
}
이 프로그램을 실행하기 전에 RAM 사용량은 약 2500/8000 MB입니다. 그것은 3200에 관해서 는 다음과 같은 예외가 발생합니다 :왜 RAM과 CPU를 사용하도록 설계된 프로그램이 모든 RAM과 CPU를 사용하지 않습니까?
자원 gormandizer.exe에서 0x773c15de에서처리되지 않은 예외 : 마이크로 소프트 C++ 예외 : 메모리 위치 0x0045f864에서 표준 : : bad_alloc 뿐이다 ..
1) 64 비트 OS에서 작동하지만이 프로그램이 사용 가능한 전체 메모리를 채우지 못하는 이유는 무엇입니까?
2) 왜 프로세서의 26 % (인텔 코어 i5) 만 사용 되었습니까?
나는 벡터가 연속적인 메모리 블록을 요구할 수도있다. 따라서 사용 가능한 메모리 양에 관계없이 필요한 크기의 메모리 블록을 사용할 수 있어야합니다. – hmjd
벡터는 링크 된 목록이 아니라 동적 배열입니까? 당신은 나를 많이 놀라게했습니다 :) – 0x6B6F77616C74
C++ 표준에서 : _ 벡터 요소는 연속적으로 저장됩니다 .. .. – hmjd