C: reference counting und constructoren/deconstructoren

OP #3729171
Lesenswert?
• ▲
▼
Hallo

Ich habe aus reinem Interesse ein par Funktionen geschrieben, mit denen:
 - Reference counting möglich wird
 - Das Abfragen der Grösse des reservierten Speicherbereichs anhand 
eines Pointers ermittelt werden kann
 - Zu einem struct einfach ein constructor und ein destructor definiert 
werden kann, welche automatich aufgerufen werden.

Getestet habe ich den code mit
1
gcc (Gentoo 4.7.3-r1 p1.4, pie-0.5.5) 4.7.3

Im Anhang sind die oben beschriebenen Funktionen in der "references.c" 
und "references.h" und ein kleines beispiel (die restlichen Dateien)

Mich interessiert jetzt besonders, was an diesem Code noch verbessert 
werden kann.

Mit Freundlichen grüssen
Daniel Abrecht
Angehängte Dateien:
#3729200
Lesenswert?
• ▲
▼
imho ist C für sowas einfach nicht gemacht. Da fehlt die 
Operatorüberladung, ohne die der Code für den Betrachter nur noch sehr 
schwer parse-bar wird.
außerdem der automatische Destruktoraufruf beim Verlassen des Scopes.

Ein großes Manko an dem Code ist, dass es nicht unterbunden wird, den 
Pointer von Hand zu kopieren, oder zu setzten.

Dies könnte man erreichen, indem man eine Struktur für den Smartpointer 
erzeugt, die man nicht einfach mit pointer=NULL; beschreiben kann.

Nachteil ist, dass die Struktur dann einen void* haben muss.

Das könnte man durch Macros, die Templates emulieren, lösen.

Du definierst eine BasisPointerStruktur mit einem void* und die 
operationen, wie copy, alloc, dealloc und erzeugst mit MACROS speziell 
für einen Typ inline-Funktionen, die intern die Basisfunktionen 
aufrufen.

Aber all die Mühe lohnt sich nicht, weil die Hauptfehlerquelle, das 
vergessen der Pointerfreigabe ist.

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