C언어 메모리 무한할당 있잖아요 .. // 매우 궁금궁금..
글쓴이: milk901 / 작성시간: 금, 2014/03/21 - 11:39오후
메모리 무한할당 있잖아요 while문에서 계쏙계속 할당되는거 ..
얼마나 메모리가 많이 할당되나 보려고 작업관리자 켜놓고 하는데
아랫 코드에서 sleep을 빼면은 엄청나게 빠르게 메모리가 증가하면서 실시간으로 메모리가 사용되는게 보이는데
저렇게 sleep을 1초 걸어놓고 차츰차츰 늘어나는걸 볼려고 하는데 sleep을 쓰는순간
작업관리자 프로세스에서 메모리가 올라가지않고 고정되어있는데 어떻게된건지 .. ㅡ.ㅡ ..
sleep이 cpu에게 1초의 시간을 정지시키는걸로 알고있는데 sleep을 붙이면 왜 프로세스에서
변화가 없는건지 ..
알려주시면 감사하겠습니다.
#include
#include
void main()
{
int * pi = (int *)malloc(sizeof(int));
while(1)
{
pi = (int *)malloc(sizeof(4000000));
printf(" allo calte \n");
Sleep(1000);
}
}
Forums:
1000줬으니까 1000초걸리죠.
1000줬으니까 1000초걸리죠.
1000주면 1초 걸리는데요 ?? 왠 1000초 ?
1000주면 1초 걸리는데요 ?? 왠 1000초 ?
>> sleep이 cpu에게 1초의 시간을
>> sleep이 cpu에게 1초의 시간을 정지시키는걸로 알고있는데
이걸보고 POSIX의 sleep() 함수를 말씀하시는거라 생각하고 코드의 Sleep은 sleep의 오타라고 생각했는데,
아무래도 코드에 적으신건 POSIX의 sleep()이 아니라 윈도우즈의 Sleep()인가보군요.
C/C++은 대소문자를 구분하는 언어입니다. sleep()과 Sleep()은 전혀 다른 함수입니다.
무슨 넌센스퀴즈같군요 Sizeof(40000000)
무슨 넌센스퀴즈같군요
Sizeof(40000000) 은 얼마일까요
음.. 다들 하시는말이 뼈가 있는말인데 내가 캐치를
음..
다들 하시는말이 뼈가 있는말인데 내가 캐치를 못하고있는건가..
바이트가 커서 그걸 한번에 메모리를 할당받을수가 없다는 소리인가 ..
님이한건 malloc(4); 와같은겁니다 한
님이한건 malloc(4); 와같은겁니다
한 100시간쯤 기다리면 1.5메가 점유한걸 볼수있을듯..
Sizeos를 빼고 malloc(1000000) 로 하심..
오 .. 진짜 malloc안에 있는 sizeof
오 .. 진짜 malloc안에 있는 sizeof 연산자를 다 뺴버리고 위아래 할당함수를 님이
말한것처럼 그렇게 숫자만 넣으니까 확실히 엄청 빠르게 달라지네요 ..
그런데 malloc괄호안에 malloc(sizeof(10000)) 한거랑 malloc(1000) 뭐가 다른건가요 ?
malloc(1000) 은 1000바이트를 할당한건 알겟는데 앞에 sizeof가 붙은거는 뭐가 다른건가요 ?..
오히려 프로그램의 이식성 때문에 자주 사용했었는데 이럴떄는 사용하면 안되는구나 ..
아니면 잘못이해하고있었던건가 ..
...
sizeof에 대해 매우 잘못 이해하고 계십니다.
괜찮은 C 입문서를 하나 구해서 정독해 보세요.
음.. 예 알겠습니다. 좋은답변 감사합니다
음.. 예 알겠습니다.
좋은답변 감사합니다
댓글 달기