1
resposta

Anotação inconsistente para "new"

Quando executo o comando:

void* operator new( size_t bytes ) { std::cout << "Alocando " << bytes << " bytes." << std::endl; return malloc(bytes); }

Ocorre as seguintes warnings:

C28196, C28251 e C6387, o problema esta no "void* operator new", alguém sabe como resolver?
1 resposta

Olá, Andreia! Como vai?

Pelo contexto que você forneceu, parece que você está tentando sobrescrever o operador new em C++. No entanto, você está recebendo alguns warnings relacionados à anotação inconsistente para o void* operator new.

Os warnings C28196, C28251 e C6387 são relacionados à inconsistência entre a declaração e a definição do operador new. Para resolver esse problema, você precisa adicionar a anotação [[nodiscard]] à declaração do operador new, indicando que o valor de retorno não deve ser ignorado. Aqui está como ficaria a declaração corrigida:

[[nodiscard]] void* operator new(
    size_t bytes
    );

Com essa correção, os warnings devem desaparecer. Lembre-se de também adicionar a implementação do operador new em algum lugar do seu código.

Espero que isso ajude! Se tiver mais alguma dúvida, é só me dizer.

Espero ter ajudado e bons estudos!