일부 메모리 관리 트릭을 수행하기 위해 operator new()
및 operator delete()
을 (모든 변형과 함께) 교체하고 싶습니다. 내 응용 프로그램의 모든 코드에서 사용자 지정 연산자 (타사 DLL뿐만 아니라 자체 DLL의 코드 포함)를 사용하고 싶습니다. 링커가 링크 할 때 첫 번째 정의를 선택한다는 것을 읽었습니다 (예 : operator new()
이 포함 된 라이브러리가 먼저 링크되면 CRT와 링크가 "박"됩니다). 이것이 일어날 것을 보장 할 수있는 방법이 있습니까? 이 규칙은 실제로 다중 정의 기호이므로 (예 : void* operator new(size_t size)
은 전역 이름 공간에 두 개의 정의가 있음)이 규칙이 무엇입니까?어디에서나 전역 "연산자 new()"를 대체 할 수 있습니까?
CRT와 정적으로 연결된 타사 DLL은 어떻습니까? CRT와 동적으로 연결되어 있다고하더라도, 내가 그들과 연결할 수있는 방법이 있습니까 operator new()
?
위험이 따르고 있습니다. 이 작업을 수행 하시겠습니까 (y/N)? > –
DLL은 바이너리이므로, DLL은 이미 컴파일되고 링크되어 있습니다. – KingRadical
충분히 좋습니다. 다음 번 StackOverflow 질문이 "매우 중요한 프로덕션 시스템에서 데이터를 복구하는 방법"이라면 나는 기분이 좋을 것입니다. ;) –