Os operadores new e delete, possuem uma similaridade com as funções de biblioteca malloc() e free(). A função malloc() retorna um ponteiro genérico (void). O tipo desse ponteiro deve ser modificado, por meio do operador de modificação de tipo, para acessar a variável apontada. O operador new retorna um ponteiro já apropriado para o tipo de dado solicitado. Em C++, malloc() não deve ser usada para alocação dinâmica de um objeto, pois supõe-se que um construtor da classe seja chamado na sua criação. Por outro lado, os operadores new e delete foram concebidos para compreender classes e objetos. Assim, construtores e destrutores serão chamados.