Dieses Symbol scheint ein vom Compiler generierter Destruktor zu sein. Was ist der Unterschied zwischen 'compiler generated destructor' und 'scalar deleting destructor'? Gibt es andere Arten von Compiler generierten ctor/dtor?Was bedeutet das Symbol "Vektor löschen Destruktor" in VC++?
Antwort
Die Funktionen mit den Namen 'scalar deleting destructor'
und 'vector deleting destructor'
sind Hilfsfunktionen, die beim Generieren von Code für die delete
-Anweisung vom VC-Compiler erstellt wurden. Verwechsle sie nicht mit dem Klassendestruktor, der auch vom Compiler erzeugt werden kann. Ersteres kann in Pseudo-Code als
void scalar_deleting_destructor(A* pa)
{
pa->~A();
A::operator delete(pa);
}
und letztere als
void vector_deleting_destructor(A* pa, size_t count)
{
for (size_t i = 0; i < count; ++i)
pa[i].~A();
A::operator delete[](pa);
}
Danke, Andrey. Ich bin ein wenig verwirrt über den inneren Löschoperator hier. Dieser Skalar-Lösch-Destruktor wird vom Compiler generiert und von 'delete a' aufgerufen, ist das richtig? Scheint der innere Aufruf zum Löschen Rekursion? – Thomson
@Thomson Lassen Sie mich versuchen, es klarer zu machen. "delete a" ist eine * delete-Anweisung *, d. h. ein Sprachkonstrukt, das nicht mit "A :: operator delete" zu verwechseln ist, das ein * delete-Operator * ist, eine Funktion, die den Speicher tatsächlich freigibt. Ich habe den C++ - Standard gerade nicht zur Hand, ich könnte etwas später Referenzen liefern. – Andrey
- 1. Was bedeutet "dynamisch" in "dynamischer atexit-Destruktor"?
- 2. Was bedeutet das Symbol "Das" in Scala
- 3. Was bedeutet das Symbol ::: Mittel in R
- 4. Was bedeutet das Symbol $ in jQuery?
- 5. Was bedeutet das Symbol^in Objective-C?
- 6. Was bedeutet das '/' Symbol in CSS bedeuten
- 7. Was bedeutet das Symbol & in Powershell?
- 8. Was bedeutet das & Symbol in Objective-C?
- 9. Was bedeutet das Symbol "#" in TSQL?
- 10. Was bedeutet das '@' Symbol in Swift?
- 11. Was bedeutet das Symbol> in css?
- 12. Was bedeutet C4250 VC++ - Warnung?
- 13. was das scala Symbol -> _ bedeutet
- 14. ist es in Ordnung, Vektor in einem Destruktor zu löschen
- 15. Was bedeutet das Löschen des Eingabepuffers?
- 16. Was bedeutet dieses Sonnenfinsternis-Symbol?
- 17. Was bedeutet "Join" im Thread (VC++ 2010)?
- 18. Was bedeutet {{}} im VC++ Watch-Fenster?
- 19. Was bedeutet das >> Symbol in Haskell?
- 20. Was bedeutet das Symbol <> in MSIL?
- 21. Was bedeutet das & (Ampersand) Symbol in diesem Fall?
- 22. Was bedeutet dieser Code in "Vektor"? (C++)
- 23. Was bedeutet Symbol Tilde (~) in CSS
- 24. Was bedeutet das - C#
- 25. Was bedeutet dieses Symbol in PHP?
- 26. Was bedeutet "# 'Symbol" -Notation in clojure?
- 27. Was bedeutet dieses Symbol in Outlook 2013?
- 28. Was bedeutet ein "?" Symbol (Fragezeichen) bedeutet in Scala?
- 29. Ruby on Rails: Was bedeutet das Symbol =>?
- 30. Daten QueryParam (sym :: Symbol) a - was bedeutet das?
ausgedrückt werden Warum Sie nicht über die anwser akzeptieren? – Liviu