강좌 & 팁
글 수 2,412
2014.07.17 17:57:31 (*.134.169.166)
41160
이번시간에는 C언어를 다루는 개발자들이 자주 사용하는 malloc()함수에 대해 알아보려고 한다.
malloc에 사용하는 파라메터, malloc 크기에 대해 그 값은 대강 2GB정도로 시스템에 의존한다고 들어 왔는데 확인해 본적은 없다.
그 최대값에 대한 정보나, 시스템에 의존한다면 각 시스템에서 제공하는 그 값을 시스템파라메터로 제공하는지 확인되지 않는다.
무심코 사용해왔지만, malloc이 할당할 수 있는 크기를 고려해야 하는 상황도(대용량데이타 처리시스템에서) 점점 빈번할 것 같다.
그래서 그 정확한 값을 알아보려고 한다.
일단 크기는 1MB보다 크다고 가정한다. 1MB에서 시작해서 2배씩 늘려가면서 malloc()을 수행한다.
그랬더니 4GB에서 malloc fail이 나왔다. 그러면 원하는 값은 2GB와 4GB사이라는 것을 알 수 있다.
이 구간에서 Binary Search를 통해 정확한 값을 알아내면 다음과 과정을 거쳐서 다음과 같은 결과를 얻을 수 있다.
결과는 2GB보다 큰값이며, 한번에 malloc받을 수 있는 크기가 거의 사용자공간크기인 것으로 나타난다.
내용 잘 보았습니다.
그런데, 잘 이해안되는 점이 있어서 문의드립니다.
윈도우 시스템에서 이걸 실행하고 윈도우 작업 관리자에서 보면
메모리 사용량이나 현재 메모리 상황을 봐도 차이가 없던데 이유가 뭘까요 ?
시간에 문제가 있을까봐 malloc 하고 나서 Sleep 문을 10초 정도 주어도 별로 차이가 없더라고요.
원인이 무엇일런지요.