Comment faire pour supprimer annuler pointeur?

Il n'y a rien de mal lors de la suppression d'un objet comme ça en C++?

MyCls* c = new MyCls();
void* p = (void*)c;
delete (MyCls*)p;
  • Je ne le crois pas.
  • Le moulage d'un pointeur vers void * et ensuite de retour à son type d'origine est garanti pour préserver sa valeur.
  • §5.2.9/13 "d'Une valeur de type pointeur sur objet converti en pointeur de cv nul”, et à l'arrière, éventuellement avec différents cv-qualification, doit avoir sa valeur d'origine."
  • Pourquoi voudriez-vous faire cela?
  • Aidley, parce que je voulais utiliser une classe C++ en C, il était nécessaire d'utiliser void pointeur.
  • Je pense que vous devriez probablement poster une question plus détaillée décrivant ce que vous faites et pourquoi, parce que je soupçonne fortement que vous le faites en moins de moyen souhaitable si c'est le cas.
  • Toutefois, il ne faut pas dire ce que la valeur résultante est. Il le dit explicitement pour les autres conversions, comme "Une rvalue de type float peut être convertie en une valeur r de type double. La valeur est inchangée"

InformationsquelleAutor user3277361 | 2014-07-16