2017-12-04 12 views
1

메모리를 다 써 버리려 고 루프를 만들었습니다. 이상한 부분이 있습니다. 나는이처럼 실행하면 예상대로 작동하고 RAM을 먹고,하고 초 1기가바이트를 넘어 :새로운 포인터의 루프를 생성 할 때 역 참조 된 포인터를 출력해도 메모리 사용량이 증가하지 않습니다.

while(true){ 
    int *pointer66 = new int; 
} 

을하지만, 나는이 같은 cout을 추가 할 때, RAM 사용량이 일관성 유지 (천천히 증가 기록 콘솔에 친구는 출력이 무엇인지,하지만) 몇 메가 바이트에 머물고, 그것 뿐이다 : 무슨 일

while(true){ 
    int *pointer66 = new int; 
    cout << *pointer66; 
} 

? 그것은 심장 박동이 기억 누출을 방지하는 것 같아? Visual Studio 2005를 사용하고 있습니다.

답변

2

std :: cout은 메모리 누수를 방지 할 수 없습니다. 그 이유는 콘솔 출력에서 ​​사이클이없이 출력되는 것보다 느린 속도로 실행되기 때문일 수 있습니다. 콘솔 출력 시간을 측정하고 결과 실행 파일을 디스 어셈블하여 두 경우 모두 실제로 메모리가 할당되는지 확인할 수 있습니다.

+0

사실 나는 당신이 옳았다는 것을 깨달았습니다. 메모리가 할당되고 있지만 콘솔 출력이 심각하게 느려집니다. 콘솔에 출력되는 내용이 많을수록 루프 실행이 느려집니다. 감사합니다. –