DLL에서 static CRT를 사용하면 각각의 DLL은 다른 heap을 사용하는가? #2

앞서 static CRT마다 각각의 heap을 가지는지 여부는 MSVCRT와 UCRT의 차이로 결정된다고 포스팅 했었다.

결론부터 얘기하자면 앞선 포스팅의 결과는 틀렸다.
조금 더 테스트를 해보니 static CRT를 사용하는 DLL을 로드 할 때 heap이 증가되는가의 여부. 즉 CRT가 초기화될 때 마다 개별적인 heap을 가지는지의 여부는 UCRT와 MSVCRT의 차이는 아니다. 이미 MSVCRT 시절에 어느 시점부터 정책이 변경됐다.

아래는 테스트 결과

VS2003 -> msvcr71d.dll!malloc(unsigned int nSize) -> heap 개수 증가

VS2010 -> msvcr100d.dll!_malloc() -> heap 개수 증가

————————————————————————–

VS2012 -> msvcr110d.dll!malloc(unsigned int nSize) -> heap 개수 증가 안함

VS2013 -> msvcr120d.dll!malloc(unsigned int nSize) -> heap 개수 증가 안함

VS2010-msvcr10.0 에서 VS2012-msvcr11.0로 바뀔 때 정책이 바뀐 것이다.
뭐 크게 중요하진 않지만 잘못된 정보는 바로 잡아야 하므로 테스트 해봤다.


댓글 남기기