Red de conocimiento de abogados - Derecho de sociedades - La diferencia entre malloc y gratis

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