vtable-layout und avr-g++

#5066753
Lesenswert?

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
Lesenswert?

"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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren