Diferència entre el nou i el malloc ()

Autora: Laura McKinney
Data De La Creació: 1 Abril 2021
Data D’Actualització: 5 Ser Possible 2024
Anonim
Diferència entre el nou i el malloc () - Tecnologia
Diferència entre el nou i el malloc () - Tecnologia

Content


El nou i el malloc () s'utilitzen per assignar dinàmicament la memòria. Tot i que, nous i malloc () són diferents en molts contres. La diferència principal entre malloc i nou () és que nou és l'operador, utilitzat com a construcció. D’altra banda, el malloc () és una funció de biblioteca estàndard, usada per assignar memòria en temps d'execució. A continuació, es detallen les altres diferències entre el gràfic de comparació:

  1. Gràfic de comparació
  2. Definició
  3. Diferències claus
  4. Conclusió

Gràfic de comparació

Bases per a la comparaciónoumalloc ()
LlenguatgeL'operador nou és una característica específica de C ++, Java i C #. La funció malloc () és una característica de C.
Naturalesa"nou" és un operador.malloc () és una funció.
sizeof ()El nou no necessita l'operador de mida, ja que hi ha molta memòria per a un tipus específic malloc requereix l'operador sizeof per saber quina mida de memòria ha de distribuir.
Constructor L’operador nou pot trucar al constructor d’un objecte.malloc () no pot en absolut fer una trucada a un constructor.
InicialitzacióL'operador nou podria inicialitzar un objecte mentre li assignés memòria.La inicialització de la memòria no es pot fer a malloc.
Sobrecàrrega L'operador nou es pot sobrecarregar.El malloc () no es pot sobrecarregar.
FracàsEn fallar, l'operador nou llança una excepció.En fallar, malloc () retorna un NULL.
DesignacióL'assignació de memòria per nou, es designava amb "suprimir".L'assignació de memòria per malloc () s'autoritza mitjançant una funció free ().
ReassignacióEl nou operador no reassigna la memòria.La memòria assignada per malloc () es pot reassignar mitjançant realloc ().
ExecucióEl nou operador retalla el temps d'execució.El malloc () requereix més temps per a l'execució.


Definició de nou

L’operador nou és un operador d'assignació de memòria que assigna memòria de manera dinàmica. El nou operador assigna memòria al grup i retorna l'adreça inicial d'aquesta memòria assignada a una variable de referència. El nou operador és similar al malloc () de C. Tanmateix, el compilador C ++ és compatible amb malloc (), però, el millor és utilitzar el nou operador ja que té certs avantatges respecte al malloc (). La sintaxi del nou operador és la següent:

type variable_name = nou tipus (paràmetre_list);

Aquí, "type" denota el tipus de dades de la variable a la qual s'ha de destinar la memòria. La paraula "variable_nom" és el nom que es dóna a la variable de referència que manté el punter a la memòria. El parèntesi aquí especifica la trucada del constructor. El paràmetre_list és la llista dels valors que es passen al constructor per inicialitzar l'objecte de nova construcció.


El nou operador assigna prou memòria necessària per a un objecte d’un tipus específic. Per tant, no necessita un operador sizeof () ni requereix redimensionar la memòria com malloc () que utilitza realloc () per reassignar la memòria. El nou operador és una construcció; anomena al constructor d'un objecte mentre es declara, que s'utilitza generalment per inicialitzar l'objecte.

Sabem que el nou operador assigna la memòria al grup i que la mida de la pila és limitada. De manera que, si el bloc queda fora de memòria i el nou operador intenta assignar la memòria, es produirà una fallada del nou operador. Si el nou operador no assigna la memòria, llançarà una excepció i, si el vostre codi no pot manejar aquesta excepció, el programa finalitza anormalment.

Es pot alliberar la memòria assignada per l’operador nou mitjançant l’operador d’eliminació. El nou operador retalla el temps d'execució, ja que és un operador, no una funció.

Definició de malloc ()

El malloc () és una funció que s'utilitza per assignar la quantitat de memòria sol·licitada al grup. El mètode retorna el punter del tipus "void" que és més enllà, escriu el format per aconseguir que el punter sigui a una memòria d'un tipus especificat i aquest punter a la memòria s'assigni a una variable de referència. La funció malloc () és similar al nou operador de C ++ ja que s'utilitza per assignar memòria de manera dinàmica. El malloc () és una funció de biblioteca estàndard. La sintaxi de la funció malloc () és la següent:

type variable_name = (tipus *) malloc (sizeof (type));

Aquí, "type" indica el tipus de tipus de la variable a la qual s'ha de destinar la memòria. La variable_nom és el nom de la variable de referència a la qual s'assignarà el punter retornat per malloc (). El (tipus *) descriu el tipus de càsting per obtenir un punter a la memòria en un tipus específic. La midaof () descriu malloc (), és a dir, quina mida de memòria és necessària.

El malloc () requereix un tipus de càsting perquè el punter retornat pel malloc () és de tipus void, per la qual cosa, per assignar-ne un tipus al punter, cal un tipus de càsting. La midaof () és necessària perquè la funció malloc () assigna una memòria bruta, per tant, cal dir a la funció malloc () que quina mida de memòria ha d’assignar. Si la memòria assignada no és suficient, es pot redimensionar o reassignar mitjançant reallocament ().

La funció malloc () assigna memòria al grup. En cas que el munt estigui fora de memòria, la funció malloc () retorna un punter NULL. Per tant, la variable de referència que conté el punter retornat per malloc (), s'ha de comprovar abans d'utilitzar-lo, en cas contrari, es podria produir un bloqueig del sistema.

La memòria assignada per la funció malloc () es deshabilita mitjançant free (). Com que la trucada de funcions porta a una despesa general, malloc () requereix més temps per a l'execució.

  1. El nou operador és una construcció introduïda en C ++ i utilitzada en Java, C #, etc. D'altra banda, malloc () és una funció de biblioteca estàndard que només es troba en llenguatge C i és compatible amb C ++.
  2. El nou operador assigna prou memòria per a l'objecte d'un tipus especificat, per la qual cosa no necessita un operador de mida. D'altra banda, la funció malloc () requereix que l'operador sizeof () informi a quina mida de memòria ha d'assignar.
  3. El nou operador pot trucar al constructor de l'objecte durant la declaració. D'altra banda, la funció malloc () no pot trucar al constructor.
  4. L'operador "nou" es podia sobrecarregar, però el malloc () no ho podria fer.
  5. Si el nou operador no assigna la memòria, llança una excepció que ha de gestionar el codi que el programa finalitzarà. D'altra banda, la funció malloc () retorna un punter NULL si no assigna la memòria. Si s'utilitza el punter sense comprovar això, es produirà un bloqueig del sistema.
  6. La memòria assignada amb un operador nou es pot deslligar mitjançant "esborrar". D'altra banda, la memòria assignada amb la funció malloc () es pot designar mitjançant free ().
  7. Una vegada que la memòria s'hagi assignat amb un nou operador, no es podrà canviar la mida del mateix. D'altra banda, la memòria assignada amb la funció malloc () es pot reassignar (redimensionar) mitjançant la funció realloc ().
  8. El temps d'execució de new és menor en comparació amb malloc (), perquè malloc és una funció i nova és una construcció.

Conclusió:

La funció malloc () és l’antiga manera d’assignar dinàmicament la memòria. Avui en dia, el nou operador s’utilitza per assignar la memòria en temps d’execució perquè té certs avantatges respecte al malloc ().