Possible en double:
Is there any danger in calling free() or delete instead of delete[]?Pouvez-vous mélanger libre et constructeur en C++?
Je lisais cette question:
In what cases do I use malloc vs new?
Quelqu'un a que l'une des raisons d'utiliser malloc était si vous allez utiliser gratuitement.
Je me demandais: est-il valide de mélanger un appel libre et une initialisation de constructeur en C++?
à savoir
Puis-je dire:
my_type *ptr = new my_type;
free(my_type);
Est-ce que d'une certaine manière invalide ou pire que:
my_type *ptr = new my_type;
delete my_type;
autre que le fait que ce n'est pas C++ ish?
De même, pourriez-vous faire le contraire? Pouvez-vous dire
my_type *ptr = (my_type *)malloc(sizeof(my_type));
delete my_type;
S'il vous plaît fusionner si c'est un double, je cherchais, mais ne vois pas une question dans ces lignes exactement sur malloc/supprimer/nouveau/demandé gratuitement.
Question est un dupe (d'un dupe). http://stackoverflow.com/questions/1612031/is-there-any-danger-in-calling-free-or-delete-instead-of-delete – Serapth
Si vous souhaitez utiliser malloc/free avec des objets C++, vous pouvez utiliser malloc et placement new operator pour appeler un constructeur et ensuite appeler delete, et appeler gratuitement pour libérer la mémoire. Ou créez un allocateur personnalisé, le cas échéant. –
@Vlad: Même après avoir utilisé le placement new, vous ne pouvez toujours pas appeler delete. Mais vous pouvez appeler manuellement le destructeur de l'objet avant d'envoyer la mémoire à libérer. –