Constructores y Malloc
A diferencia de las expresiones nuevas y de eliminación, std::malloc no invoca al constructor al asignar memoria para un objeto. Por lo tanto, para crear un objeto y al mismo tiempo llamar a su constructor, se requiere un enfoque alternativo.
Posibles soluciones:
1. Utilizando nuevo:
Este es el uso principal previsto, ya que nuevo crea explícitamente un objeto y posteriormente invoca a su constructor.
Ejemplo:
A* a = new A();
delete a;
2. Invocación explícita del constructor (ubicación nueva):
Este método implica asignar memoria usando malloc y luego invocar manualmente el constructor usando la sintaxis de ubicación nueva.
Ejemplo:
A* a = (A*)malloc(sizeof(A));
new (a) A();
a->~A();
free(a);
Es importante tener en cuenta que la colocación de new requiere el uso de la sobrecarga del constructor correcta y debe usarse con moderación. Generalmente, se debe emplear new para la creación de objetos, mientras que la colocación de new es adecuada para escenarios específicos donde la administración de la memoria se maneja manualmente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3