Malloc vs Nuevo
Una de las preguntas de entrevista más comunes en la contratación de un programador informático es que el solicitante / programador informático explique las diferencias entre malloc y nuevo. Tanto malloc como new existen en el ámbito del lenguaje informático y, a menudo, los programadores informáticos los utilizan para realizar asignaciones de memoria dinámica..
Las diferencias básicas entre los dos es que malloc existe en el lenguaje C, mientras que el nuevo es una característica específica del lenguaje C ++. Malloc también es una función (que, para los programadores, requiere algo de tiempo para ejecutarse), mientras que nuevo es un programa de operador (que reduce el tiempo de ejecución). Este es un beneficio del operador nuevo porque los programadores que realizan la programación en tiempo real tienen la necesidad de elegir el método más rápido de usar.
Operador nuevo es de tipo seguro a diferencia de la función malloc.
La función malloc es una función de biblioteca para el lenguaje C Todo lo que hace es asignar memoria y devolverle un puntero. Por otro lado, el operador new es una construcción a nivel de idioma, y su trabajo es crear una instancia de un objeto asignando memoria y llamando a los constructores apropiados. Otra diferencia de la función malloc del operador new es que malloc requiere encasillado durante la declaración, mientras que el primero no lo hace. Además, la función malloc usa la palabra "libre" para borrar la memoria mientras que "eliminar" se usa en el operador new para el propósito similar.
Los dos también tienen diferentes maneras de lidiar con el fracaso y el agotamiento de la memoria. Si la función malloc falla, regresa con un puntero NULL. El operador nuevo nunca devuelve un puntero NULO, pero indica el error al lanzar una excepción. Esta es una ventaja para el operador nuevo, ya que el programador informático no tiene que comprobar el puntero devuelto cada vez que llama nuevo, ni el programador informático perderá una excepción..
La función malloc no construye un objeto (llamado constructor de objeto) pero el operador new lo hace. Otra ventaja de lo nuevo es que el operador puede estar sobrecargado, mientras que la función malloc no puede. El operador nuevo requiere un número específico de objetos para asignar, mientras que la función malloc requiere especificar el número total de bytes para asignar.
La memoria también se puede redimensionar o reasignar utilizando la función malloc usando realloc. Sin embargo, el operador nuevo no puede realizar esta función y la considera como una de las principales desventajas del operador. Otra ventaja de la función malloc sobre el operador nuevo es que malloc puede ampliar la cantidad de memoria rápidamente. Esto sigue usando malloc y realloc. Al hacer la misma situación en lenguaje C ++, el programador tiene que crear una nueva porción de memoria con el operador new. La nueva memoria debe tener un tamaño modificado y se copiará sobre los datos del búfer original. El búfer original tiene que ser eliminado después de la copia. Esto puede ser un proceso lento para un programador.
El operador new tiene el apalancamiento sobre la función malloc devolviendo el tipo de datos exacto mientras que la función devuelve void *. La función malloc tampoco puede sobrecargarse en comparación con el operador nuevo en el que es posible la sobrecarga. Otra característica del operador es que hay menos posibilidades de cometer errores con el operador en comparación con la función malloc. Esto se considera una ventaja para los programadores, especialmente si están escribiendo muchos códigos o trabajando en un código en un horario ajustado. Las funciones malloc y free se pueden usar en C ++, pero no se pueden usar directamente. Es recomendable utilizar nuevo y eliminar en su lugar..
Resumen:
1. Malloc es una función, mientras que nuevo es un operador..
2. Nuevo es una característica específica del lenguaje C ++, mientras que malloc se usa en el lenguaje C.
3. El operador nuevo sigue con "eliminar", mientras que la función malloc va con "gratis".
4. La función malloc es una función de biblioteca para el lenguaje C, mientras que el operador new es una construcción a nivel del lenguaje del lenguaje C ++.