Utilice new
. No debería necesitar usar malloc
en un programa C++, a menos que esté interactuando con algún código C o tiene algún motivo para administrar la memoria de una manera especial.
Su ejemplo de node = malloc(sizeof(Node))
es una mala idea, porque el constructor de Node
(si es que existe) no se llamaría, y una posterior delete node;
tendría resultados no definidos.
Si necesita una memoria intermedia de bytes, en lugar de un objeto, por lo general, querrá hacer algo como esto:
char *buffer = new char[1024];
o, preferiblemente, algo como esto:
std::vector<char> buffer(1024);
Tenga en cuenta que para el segundo ejemplo (usando std::vector<>
), no es necesario delete
el objeto; su memoria se liberará automáticamente cuando se salga del alcance. Debe esforzarse por evitar tanto new
como malloc
en los programas C++, en su lugar usar objetos que administren automáticamente su propia memoria.
Tenga en cuenta que en C++ no hay conversión implícita de void *, entonces en el caso malloc necesita hacer 'Node * node1 = reinterpret_cast (malloc (sizeof (Node));' que claramente es demasiado tipeo. :) (De acuerdo, puedes hacer un molde C-style también, pero ¿por qué estás codificando en C++? :)) –
Trata de no aplicar C a C++ demasiado, son idiomas diferentes con cosas hechas de diferentes maneras. – GManNickG