malloc y constructores: una guía exploratoria
en el reino de la asignación de memoria, la biblioteca estándar proporciona tanto std :: malloc como nuevas expresiones. Mientras que New Convenientemente inicializa objetos a través de constructores, STD :: MALLOC no. Esto plantea la pregunta: ¿Cómo podemos crear un objeto y garantizar su invocación de constructor cuando se usa std :: malloc?
un enfoque directo es simplemente emplear la nueva expresión, ya que sirve al propósito previsto. Sin embargo, si prefiere quedarse con std :: malloc, hay un método alternativo: llamar explícitamente al constructor utilizando una técnica conocida como "colocación nueva". Para lograr esto:
use std :: malloc para asignar memoria para el objeto.
use new (pointer) para inicializar el objeto en esa ubicación.
aquí hay un código que demuestra la ubicación nueva:
pointer = (type*)malloc(sizeof(type));
new (pointer) type();
utilizando la ubicación nueva, puede crear objetos con std :: malloc mientras aún invoca constructores. 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