Pergunta

Estou tentando sobrecarregar o operador global novo e excluir um aplicativo sensível ao desempenho. Eu li as preocupações descritas em http://www.informit.com/articles/article.aspx?p=30642&seqnum=3 e as recomendações para usar o alocador da Intel TBB http://www.intel.com/technology/itj/2007/v11i4/5-foundations/5-memory.htm

Como estou sobrecarregando novos e exclui pela primeira vez, tenho algumas perguntas.

Devo incluir meu novo alocador de cabeçalho.h (ou pre.h) contendo a nova função sobrecarregada em todos os arquivos que contêm chamadas "novas"? Isso é tedioso.

Ou devo usar "gcc -include alocator.h ...", que inclui alocador.h (antes) em cada unidade de tradução? Eu quero manter a plataforma de código independente o máximo possível. Todos os compiladores suportam algo análogo a "GCC -include"?

Foi útil?

Solução

Se você deseja sobrecarregar o global operator new e operator delete, você só precisa implementá -lo. Você não precisa defini -lo explicitamente em todos os lugares, pois já é definido como parte do idioma.

EDIT: Se você deseja definir um novo operador que leva parâmetros diferentes, precisará #include em todos os lugares. No entanto, você faz isso depende de você; É principalmente uma questão de estilo.

E não se esqueça de implementar todas as variantes do operador global novo e excluir: new, new[], delete, delete[], e as std::nothrow variantes.

Outras dicas

Se você estiver usando o Visual Studio e usando cabeçalhos pré -compilados, poderá lançar a inclusão lá. Eu acho que o GCC também tem algum tipo de cabeçalhos pré -compilantes, o que melhoraria seus tempos de compilação também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top