Utilisez new
. Vous ne devriez pas avoir besoin d'utiliser malloc
dans un programme C++, sauf s'il interagit avec du code C ou si vous avez des raisons de gérer la mémoire d'une manière spéciale.
Votre exemple de node = malloc(sizeof(Node))
est une mauvaise idée, parce que le constructeur de Node
(le cas échéant existe) ne serait pas appelé, et une delete node;
ultérieure aurait des résultats non définis.
Si vous avez besoin d'un tampon d'octets, au lieu d'un objet, vous aurez envie généralement faire quelque chose comme ceci:
char *buffer = new char[1024];
ou, de préférence, quelque chose comme ceci:
std::vector<char> buffer(1024);
Notez que pour le deuxième exemple (en utilisant std::vector<>
), il n'y a pas besoin de delete
l'objet; sa mémoire sera automatiquement libérée lorsqu'elle sortira de sa portée. Vous devez vous efforcer d'éviter à la fois new
et malloc
dans les programmes C++, en utilisant à la place des objets qui gèrent automatiquement leur propre mémoire.
Notez que dans C++ il n'y a pas de distribution implicite de void *, donc sur le malloc, vous devez faire 'Node * node1 = reinterpret_cast (malloc (sizeof (Node));' qui est clairement trop typé. :) (Ok ok vous pouvez aussi faire un casting de style C, mais alors pourquoi codifiez-vous en C++?) –
Essayez de ne pas trop appliquer C à C++, ce sont des langages différents avec des choses faites de différentes façons. – GManNickG