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

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

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

‘DLL프로젝트에서 static CRT를 사용할 경우 각각의 static CRT는 각각의 heap을 사용한다.따라서 static CRT를 사용하는 DLL을 2개 사용할 경우 프로세스에는exe(1) + dll(1) + dll(1) = 3 해서 최소한 3개의 heap이 존재한다.’ 라고 기억하고 있다. 근데 최근에 발표자료 만들면서 테스트 해보니 DLL을 여러 개 로드해도 heap 개수가 증가되지 않는 것으로 확인되었다. Windows 10이전에는 CRT가 msvcrtxxx.dll에 구현되어 있었고 … More DLL에서 static CRT를 사용하면 각각의 DLL은 다른 heap을 사용하는가?

windbg에서 실행할 때 HeapAlloc()이 다르게 동작하는 이유

디버거에서 exe를 launch한 경우 LFH를 사용하지 않는다는 글을 어디선가 본것 같다.일단 Visual Studio Debugger에 대해서는 해당되지 않는 얘기다.Windows 10/11 모두 exe를 직접 실행하거나 Visual Studio에서 launch한 경우 LFH를 사용하는 것을 확인했다. 이 와중에 조금 이상한 점을 발견했는데 windbg에서 launch하는 경우 동일 사이즈 메모리 할당에 대해서 HeapAlloc()에서 돌려주는 메모리의 실제 사이즈(heap entry의 사이즈)가 다르다는 것이다.debug/release 또는 … More windbg에서 실행할 때 HeapAlloc()이 다르게 동작하는 이유

Windows 10 vs Windows 11 IME 메시지 순서의 차이

작년 즈음인가 Windows 11에서 VOXEL HORIZON을 Windows 11에서 실행했을때 한국어를 입력하면 글자가 2개식 입력되는 문제가 있음을 발견했다. 처음에는 Windows 11의 문제라고 생각했고 조만간 해결되겠지..라고 대수롭지 않게 생각했다. 한참 테스트 방송을 진행할 무렵에는 Windows 10을 사용하고 있었고 문제가 없었다. 그러다가 어느 시점부터 테스트 방송도 더 이상 하지 않게 됐다. 그리고 Windows 11로 업그레이드 했다. 최근에 VOXEL … More Windows 10 vs Windows 11 IME 메시지 순서의 차이

DWrite에서 Custom Font사용하기

내 게임에서 몇 가지 외부 폰트를 사용한다. 익히 알려진 구글의 Noto sans와 Let’s go digital regular가 그것이다. 엊그제 UI레이어 코드 버그를 잡으면서 UWP빌드도 업데이트를 했다. 테스트 해보니 잘 도는거 같은데 뭔가 이상하다. Let’s go digital regular폰트가 제대로 나오지 않는다. 이게 8세그먼트 숫자로 표시되는 폰트인데 그냥 쌩 숫자로 나오네. 코드를 뒤져보니 UI코드 문제가 아니고 처음부터 폰트를 … More DWrite에서 Custom Font사용하기