C ++로 된 글로벌 운영자를 과부하 신규/삭제
-
11-07-2019 - |
문제
글로벌 운영자에게 새로워지고 성능 민감한 응용 프로그램을 삭제하려고합니다. 나는 다음에 설명 된 우려 사항을 읽었습니다 http://www.informit.com/articles/article.aspx?p=30642&seqnum=3 그리고 Intel TBB의 할당자를 사용하는 권장 사항 http://www.intel.com/technology/itj/2007/v11i4/5-foundations/5-memory.htm
처음으로 새로워지고 삭제하기 때문에 몇 가지 질문이 있습니다.
"새"호출이 포함 된 모든 파일에 과부하 된 새 기능이 포함 된 새 헤더 Allocator.h (또는 pre.h)를 포함해야합니까? 이것은 지루합니다.
아니면 각 번역 장치에 allocator.h (이전)를 포함하는 "gcc -include allocator.h ..."를 사용해야합니까? 코드 플랫폼을 최대한 독립적으로 유지하고 싶습니다. 모든 컴파일러가 "gcc -include"와 유사한 것을 지원합니까?
해결책
글로벌에 과부하를주고 싶다면 operator new
그리고 operator delete
, 당신은 그것을 구현하면됩니다. 이미 언어의 일부로 정의되어 있기 때문에 모든 곳에서 명시 적으로 정의 할 필요가 없습니다.
편집 : 다른 매개 변수를 사용하는 연산자를 정의하려면 모든 곳에서 #include가 필요합니다. 그러나 당신은 그렇게합니다. 대부분 스타일의 문제입니다.
글로벌 운영자의 모든 변형을 새롭게 구현하고 삭제하는 것을 잊지 마십시오. new
, new[]
, delete
, delete[]
, 그리고 std::nothrow
변형.
다른 팁
Visual Studio를 사용하고 사전 컴파일 된 헤더를 사용하는 경우 포함을 거기에 던질 수 있습니다. GCC는 어떤 형태의 사전 컴파일 헤더도 가지고 있다고 생각합니다.