Malloc vs New
Uma das perguntas mais comuns da entrevista na contratação de um programador de computador é para o candidato / programador de computador explicar as diferenças entre o malloc e o novo. Tanto malloc quanto new existem no domínio da linguagem de computador e são frequentemente usados por programadores de computador para alocações dinâmicas de memória.
As diferenças básicas entre os dois é que o malloc existe na linguagem C, enquanto novo é um recurso específico da linguagem C ++. Malloc também é uma função (que, para programadores, requer algum tempo para ser executada), enquanto new é um programa operador (que reduz o tempo de execução). Este é um benefício do novo operador, porque os programadores que fazem a programação em tempo real precisam escolher o método mais rápido de usar..
O operador new é de tipo seguro, diferentemente da função malloc.
A função malloc é uma função de biblioteca para a linguagem C. Tudo o que faz é alocar memória e retornar um ponteiro para ela. Por outro lado, o operador new é uma construção no nível do idioma e seu trabalho é instanciar um objeto alocando memória e chamando os construtores apropriados. Outra diferença da função malloc em relação à nova operadora é que o malloc requer conversão de tipo durante a declaração, enquanto o primeiro não. Além disso, a função malloc usa a palavra "free" para limpar a memória enquanto "delete" é usado no operador new para a mesma finalidade.
Os dois também têm maneiras diferentes de lidar com falhas e exaustão de memória. Se a função malloc falhar, ela retornará com um ponteiro NULL. O operador new nunca retorna um ponteiro NULL, mas indica a falha lançando uma exceção. Essa é uma vantagem para o operador novo, pois o programador de computador não precisa verificar o ponteiro retornado toda vez que chama de novo, nem o programador de computador perde essa exceção.
A função malloc não constrói um objeto (chamado construtor de objeto), mas o operador new faz. Outra vantagem da novidade é que o operador pode estar sobrecarregado, enquanto a função malloc não. O operador new requer um número específico de objetos a serem alocados, enquanto a função malloc exige a especificação do número total de bytes a serem alocados.
A memória também pode ser redimensionada ou realocada usando a função malloc usando realloc. No entanto, o operador new não pode executar esta função e a considera uma das principais desvantagens do operador. Outra vantagem da função malloc sobre o operador novo é que o malloc pode estender a quantidade de memória rapidamente. Isso ainda está usando malloc e realloc. Ao fazer a mesma situação na linguagem C ++, o programador precisa criar um novo pedaço de memória com o operador new. A nova memória precisa ter um tamanho modificado e será copiada sobre os dados do buffer original. O buffer original deve ser excluído após a cópia. Este pode ser um processo lento para um programador.
O operador new tem alavancagem sobre a função malloc retornando o tipo de dados exato enquanto a função retorna nula *. A função malloc também não pode ser sobrecarregada em comparação com o operador novo, em que a sobrecarga é possível. Outra característica do novo operador é que há menos chances de cometer erros com o operador em comparação com a função malloc. Isso é considerado uma vantagem para os programadores, especialmente se eles estiverem escrevendo muitos códigos ou trabalhando em um código com um cronograma apertado. A função malloc e free pode ser usada em C ++, mas não pode ser usada diretamente. É aconselhável usar novo e excluir.
Resumo:
1. Malloc é uma função enquanto new é um operador.
2. Novo é um recurso específico da linguagem C ++, enquanto o malloc é usado na linguagem C.
3. O operador new segue com "delete" enquanto a função malloc passa com "free".
4. A função malloc é uma função de biblioteca para a linguagem C, enquanto operador new é uma construção no nível da linguagem da linguagem C ++.