문제

글로벌 운영자에게 새로워지고 성능 민감한 응용 프로그램을 삭제하려고합니다. 나는 다음에 설명 된 우려 사항을 읽었습니다 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는 어떤 형태의 사전 컴파일 헤더도 가지고 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top