"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Entrada: ¿Cómo puedo construir objetos usando `std :: malloc`? Salida: la postura correcta para construir un objeto usando `std :: malloc`

Entrada: ¿Cómo puedo construir objetos usando `std :: malloc`? Salida: la postura correcta para construir un objeto usando `std :: malloc`

Publicado el 2025-04-15
Navegar:938

 How Can I Construct Objects Using `std::malloc`?

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.

    the Syntax para la ubicación New lo parece:
  1. Pointer = (tipo*) malloc (sizeOf (type)); new (Pointer) type ();
  2. Después de crear el objeto, no olvide destruirlo usando la sintaxis explícita ~ type () y libera la memoria con gratis.

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.

Último tutorial Más>

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