malloc() frente a nuevo

Las siguientes son las diferencias entre malloc() y el operador new.

  1. Llamando a los constructores: new llama a los constructores, mientras que malloc() no lo hace. De hecho, los tipos de datos primitivos (char, int, float… etc.) también se pueden inicializar con new. Por ejemplo, el siguiente programa imprime 10.

CPP

#include<iostream>
using namespace std;
int main()
{
    // Initialization with new()
    int *n = new int(10);
    cout << *n;
    getchar();
    return 0;
}
Producción: 

10

 

2. operador vs función: new es un operador, mientras que malloc() es una función.

3. tipo de devolución: new devuelve el tipo de datos exacto, mientras que malloc() devuelve void *.

4. Condición de falla: En caso de falla, malloc() devuelve NULL mientras que new lanza la excepción bad_alloc.

5. Memoria: en caso de que sea nueva, la memoria se asigna desde el almacén libre, mientras que en malloc() la asignación de memoria se realiza desde el montón.

6. Tamaño: el compilador calcula el tamaño requerido de la memoria para new, mientras que tenemos que calcular manualmente el tamaño para malloc().

7. Tamaño del búfer: malloc() permite cambiar el tamaño del búfer usando realloc() mientras que new no lo hace.

new
malloc()
constructor de llamadas no llama constructores              
es un operador es una funcion
Devuelve el tipo de datos exacto Devoluciones nulas *
en caso de falla, lanza la excepción bad_alloc      En caso de falla, devuelve NULL
el compilador calcula el tamaño el tamaño se calcula manualmente

Escriba comentarios si encuentra algo incorrecto en la publicación anterior o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *