vtable-layout und avr-g++

OP #5066753
Hallo zusammen,

mir ist der Aufbau der vtables im Compilat des avr-g++ unklar. Was ich 
vorgefunden habe, sieht etwa so aus:

Fall 1)
Basisklasse hat keinen(!) virtuellen dtor. Dies darf man natürlich nur 
machen, wenn man Objekte nicht polymorph zerstört, also kein delete 
verwendet.

(Einträge als Zeigerwerte (hier je ein word)):
1
0 
2
0 
3
f1
4
f2
5
...

Fall 2)
Basisklasse hat einen virtuellen dtor. Jetzt benötigt man natürlich auch 
noch new, delete, delete. Zum Testen sind das erst mal leere 
Realisierungen, denn sie werden im Beispielcode auch gar nicht 
verwendet. Damit ergibt sich:
1
0 
2
0 
3
dtor
4
dtor
5
f1
6
f2
7
...

Nun ist mir folgendes nicht klar:

a) welche Bedeutung haben die beiden ersten (immer 0) Einträge in der 
vtable?
b) warum wird hier zweimal ein dtor eingetragen?
Gast #5068696
"dtor" ? virtual destruction pointer?

Ich dachte, "delete" auf dem Arduino würde sowieso nicht richtig 
funktionieren, weil man einen "garbage collector" braucht, damit keine 
zu großen Speichertotbereiche entstehen.
Gast #5074643
Autor: S. R. (svenska)
>Nicht denken, wissen.
>Speicherfragmentierung ist eine Sache, "delete funktioniert nicht" ist
>eine andere Sache.

Ja und da wäre noch:
nicht labern, lesen lernen.
Da steht "funktioniert nicht richtig".

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.