Forum: Compiler & IDEs vtable-layout und avr-g++


von Raoul D. (raoul_d219)


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?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?


von Markus (Gast)


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.

von S. R. (svenska)


Lesenswert?

Nicht denken, wissen.
Speicherfragmentierung ist eine Sache, "delete funktioniert nicht" ist 
eine andere Sache.

von Rolf M. (rmagnus)


Lesenswert?

S. R. schrieb:
> Speicherfragmentierung ist eine Sache, "delete funktioniert nicht" ist
> eine andere Sache.

Und ein Garbage Collector ist nochmal was ganz anderes.

von Harry (Gast)


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".

von chris (Gast)


Lesenswert?

Hier ist eine schöne Diskussion über das delete beim AVR-GCC:

Beitrag "Re: c++ new und delete"

von Oliver S. (oliverso)


Lesenswert?

Harry schrieb:
> Da steht "funktioniert nicht richtig".

Ist trotzdem falsch.

Oliver

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

chris, Markus, Harry: Verwarnung wegen Verstoßes gegen die Forenregeln.
Bleib' bei einem Namen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.