La diferencia entre malloc y gratis
1. malloc y free son funciones de biblioteca estándar del lenguaje C++/C, y new/delete son operadores de C++. Ambos se pueden utilizar para solicitar memoria dinámica y liberar memoria.
2. Para objetos de tipos de datos no internos, maloc/free por sí solo no puede cumplir con los requisitos de los objetos dinámicos. El objeto debe ejecutar automáticamente el constructor cuando se crea, y el objeto debe ejecutar automáticamente el destructor antes de morir. Dado que malloc/free es una función de biblioteca en lugar de un operador, no está bajo el control del compilador. La tarea de ejecutar constructores y destructores no se puede imponer a malloc/free.
3. Por lo tanto, el lenguaje C++ necesita un operador nuevo que pueda completar el trabajo de inicialización y asignación de memoria dinámica, y un operador de eliminación que pueda completar el trabajo de limpieza y liberación de memoria. Tenga en cuenta que nuevo/eliminar no son funciones de biblioteca.
4. Los programas C++ a menudo llaman a funciones C, pero los programas C solo pueden usar malloc/free para administrar la memoria dinámica
Nuevo es un operador, y ¿qué son "+" y "-? " ,"="...tienen el mismo estado
En pocas palabras:
malloc y free son funciones de c, new y eliminar son operadores de c++
Además, new es un tipo obligatorio, malloc no lo es y requiere conversión de tipo
Por supuesto que hay muchas diferencias
new puede llamar al constructor para que se inicialice cuando se declara
malloc solo asigna espacio y necesita inicializarse en otro lugar
Y eliminar no solo liberará el espacio, sino que también llamará al destructor antes de liberarlo
Y malloc necesita para especificar el tamaño del espacio asignado, y el nuevo se calcula automáticamente