메모리 무한할당 있잖아요 while문에서 계쏙계속 할당되는거 ..
얼마나 메모리가 많이 할당되나 보려고 작업관리자 켜놓고 하는데
아랫 코드에서 sleep을 빼면은 엄청나게 빠르게 메모리가 증가하면서 실시간으로 메모리가 사용되는게 보이는데
저렇게 sleep을 1초 걸어놓고 차츰차츰 늘어나는걸 볼려고 하는데 sleep을 쓰는순간
작업관리자 프로세스에서 메모리가 올라가지않고 고정되어있는데 어떻게된건지 .. ㅡ.ㅡ ..
sleep이 cpu에게 1초의 시간을 정지시키는걸로 알고있는데 sleep을 붙이면 왜 프로세스에서
변화가 없는건지 ..
알려주시면 감사하겠습니다.
#include
void main()
{
int * pi = (int *)malloc(sizeof(int));
while(1)
{
pi = (int *)malloc(sizeof(4000000));
printf(" allo calte \n");
Sleep(1000);
}
}
정지가 아닌 휴식시간이 옳은 표현입니다.
흥미롭네요, 아마 운영체제에서 sleep을 사용하는 프로그램이 있으면 실제 메모리 할당을 늦춘다거나 하는 괴상한 최적화가 이루어질 것 같네요
음.. ㅠㅠ 속시원한 답은 어디없을까
pi = (int *)malloc(sizeof(4000000)); 아래에 printf("%d\n", pi[999999]); 를 넣어보시죠
그리고 Sleep의 파라미터로 밀리세컨드 단위의 시간이 필요한지 초단위의 시간이 필요한지도 확인해 보시고요; 아마 1000초를 쉴 수도 있겠네요
asdf 님이 말씀하신 pi = (int *)malloc(sizeof(4000000)); 아래에 printf("%dn", pi[999999]); 를 넣으니까 런타임 오류가 발생해서 실행하기도 전에 오류가 뜨네염 ..
제 환경에서는 sleep(1000)주면 정확히 1초 쉬네요 .. 음.. 숫자를 바꿔봐도 이전과 다르지가 않네요 ..