Diferença Entre Malloc e Novo Diferença entre

Anonim

Malloc vs New

One das questões de entrevista mais comuns na contratação de um programador de computador é para o candidato / programador de computador para explicar as diferenças entre o malloc e o novo. Ambos os malloc e os novos existem no domínio da linguagem do computador e, muitas vezes, são usados ​​por programadores de computador para alocações de memória dinâmicas.

As diferenças básicas entre os dois são que o malloc existe no idioma C enquanto o novo é uma característica específica da linguagem C ++. Malloc também é uma função (que, para programadores, requer algum tempo para executar), enquanto o novo é um programa de operador (que corta o tempo de execução). Este é um benefício do operador novo porque os programadores que fazem programação em tempo real precisam escolher o método mais rápido para usar.

O operador novo é seguro de tipo diferente da função malloc.

Função malloc é função de biblioteca para o idioma C. Tudo o que faz é alocar memória e retornar um ponteiro para ela. Por outro lado, o operador novo é uma construção de nível de idioma, e seu trabalho é instanciar um objeto alocando memória e chamando os construtores apropriados. Outra diferença de função do malloc do operador novo é que o malloc requer a falsificação durante a declaração, enquanto o primeiro não faz. Além disso, a função malloc usa a palavra "livre" para limpar a memória enquanto "delete" é usado no operador novo para fins semelhantes.

Os dois também têm diferentes maneiras de lidar com o fracasso e o esgotamento da memória. Se a função malloc falhar, ela retorna com um ponteiro NULL. O operador novo nunca retorna um ponteiro NULL, mas indica a falha ao lançar uma exceção em vez disso. Esta é uma vantagem para o operador novo, uma vez que o programador de computador não precisa verificar o ponteiro retornado sempre que ele chama de novo, nem o programador de computador perderá essa exceção.

Função malloc não constrói um objeto (chamado construtor de objeto), mas o operador novo faz. Outra vantagem do novo é que o operador pode ser sobrecarregado enquanto a função malloc não pode. O operador novo requer um número específico de objetos para alocar enquanto a função malloc requer especificar o 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 novo não pode executar esta função e a conta como 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 em linguagem C ++, o programador deve criar um novo pedaço de memória com o operador novo. A nova memória deve 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. Isso pode ser um processo lento para um programador.

Operador novo tem alavancagem sobre a função malloc retornando o tipo de dados exato enquanto a função retorna nulo *. A função malloc também não pode ser sobrecarregada em comparação com o operador novo, onde a sobrecarga é possível. Outra característica do operador novo é 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 estão escrevendo muitos códigos ou trabalhando em um código em uma agenda apertada. A função malloc e livre pode ser usada em C ++, mas não pode ser usada diretamente. É recomendável usar novo e excluir em vez disso.

Resumo:

1. Malloc é uma função enquanto o novo é um operador.

2. Novo é uma característica específica da linguagem C ++, enquanto o malloc é usado no idioma C.

3. O operador novo segue com "apagar" enquanto a função malloc passa com "livre". "

4. Função malloc é função de biblioteca para o idioma C enquanto o operador novo é uma construção de nível de idioma a partir do idioma C ++.