Diferencia entre Malloc y New

Malloc vs nuevo
Una de las preguntas de entrevista más comunes al contratar uncomputadoraEl programador es para que el solicitante / programador de computadoras explique las diferencias entre malloc y new. Tanto malloc como new existen en el ámbito del lenguaje informático y, a menudo, los programadores informáticos los utilizan para asignaciones de memoria dinámica.

Las diferencias básicas entre los dos es que malloc existe en el lenguaje C, mientras que nuevo es una característica específica del lenguaje C ++. Malloc también es una función (que, para los programadores, requiere algunoshoraejecutar) mientras que new es un programa de operador (que reduce el tiempo de ejecución). Este es un beneficio nuevo para el operador porque los programadores que realizan programación en tiempo real tienen la necesidad de elegir el método más rápido para usar.



El operador new 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 nuevo es una construcción a nivel de lenguaje, y su trabajo es crear una instancia de un objeto asignando memoria y llamando a los constructores apropiados. Otra diferencia entre la función malloc y el operador new es que malloc requiere encasillamiento durante la declaración, mientras que el primero no. Además, la función malloc usa la palabra 'libre' para borrar la memoria, mientras que 'eliminar' se usa en el operador nuevo para el mismo propósito.

Los dos también tienen diferentes formas de lidiar con las fallas y el agotamiento de la memoria. Si la función malloc falla, regresa con un puntero NULL. El operador nuevo nunca devuelve un puntero NULL, pero indica el error lanzando una excepción. Esto es unventajapara el operador nuevo, ya que el programador informático no tiene que comprobar el puntero devuelto cada vez que llama a nuevo ni el programador informático perderá tal 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 sobrecargarse mientras que la función malloc no. El operador new 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 cambiar de tamaño o reasignar usando la función malloc usando realloc. Sin embargo, el operador nuevo no puede realizar esta función y la considera una de las principales desventajas del operador. Otra ventaja de la función malloc sobre el operador new es que malloc puede extender la cantidad de memoria rápidamente. Esto todavía está 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á en eldatosdel búfer original. El búfer original debe eliminarse después de la copia. Este puede ser un proceso lento para un programador.

El operador nuevo tiene influencia sobre la función malloc devolviendo ladatosescriba mientras la función devuelve void *. La función malloc tampoco se puede sobrecargar en comparación con el operador new en el quesobrecargaes posible. Otra característica nueva 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 escriben muchoscodigoso trabajar en un código en un horario apretado. Las funciones malloc y free se pueden usar en C ++, pero no se pueden usar directamente. Es aconsejable utilizar new y eliminar en su lugar.

Resumen:

1. Malloc es una función mientras que new 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 new 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 nuevo es una construcción a nivel de lenguaje del lenguaje C ++.