이번시간에는 C언어를 다루는 개발자들이 자주 사용하는  malloc()함수에 대해 알아보려고 한다.

 

malloc에 사용하는 파라메터, malloc 크기에 대해 그 값은 대강 2GB정도로 시스템에 의존한다고 들어 왔는데 확인해 본적은 없다.

그 최대값에 대한 정보나,  시스템에 의존한다면 각 시스템에서 제공하는 그 값을 시스템파라메터로 제공하는지 확인되지 않는다.
무심코 사용해왔지만,  malloc이 할당할 수 있는 크기를 고려해야 하는 상황도(대용량데이타 처리시스템에서) 점점  빈번할 것 같다.
그래서 그 정확한 값을 알아보려고 한다.


일단 크기는 1MB보다 크다고 가정한다. 1MB에서 시작해서 2배씩 늘려가면서 malloc()을 수행한다.

 malloc_limit_1.png


그랬더니 4GB에서 malloc fail이 나왔다. 그러면 원하는 값은 2GB와 4GB사이라는 것을 알 수 있다.
이 구간에서 Binary Search를 통해 정확한 값을 알아내면 다음과 과정을 거쳐서 다음과 같은 결과를 얻을 수 있다.

 malloc_limit_2.png

결과는 2GB보다 큰값이며, 한번에 malloc받을 수 있는 크기가 거의 사용자공간크기인 것으로 나타난다.