Makro für char * Ersetzung?
-
Ich hab ein c struct mit char * drin, ich würd das ganze gerne nicht per Hand managen und ein auto_ptr mit dem struct ist zwar cool, bringt mir aber bei nem struct mit nem char * unfun, wenn du verstehst

-
Seikilos schrieb:
... unfun, wenn du verstehst

Kein Stück.
-
auto_ptr löscht sich selbst, ergo wird das struct korrekt dealloziiert, aber nicht der char * im struct, das bedeutet also leak
-
Seikilos schrieb:
auto_ptr löscht sich selbst, ergo wird das struct korrekt dealloziiert, aber nicht der char * im struct, das bedeutet also leak
Ich verstehe Dein Problem eher ganz Grundsätzlich nicht. Ich denke mal, dass es sich immer noch um die gleiche Sache handelt, wegen der Du auch die letzten paar Threads eröffnet hast.
In einem der Threads wurde mal nach mehr Infos zu der Sache gefragt. Aber da ist bis jetzt nichts rübergekommen.
-
Oh, ich meinte, dass ich es mal getan habe.
Wir haben alte XDR Daten und einen RPC Gen von Sun, dieser ist in C geschrieben und wirft dementsprechend halt alte C structs aus, wo ein char * das hächste der Gefühle ist. Diese Daten können und dürfen nicht geändert werden, weil sie ständig neu generiert werden.
Ich soll nun damit arbeiten, habe jedoch wenig Interesse mich mit den Pointern rumzuschlagen, daher plane ich, das alte C in aktuelleres C++ mit allen Annehmlichkeiten zu ändern. Da ich jedoch nicht die Daten selber ändern kann, muss ich einen Umweg suchen, wie ich so viel wie Möglich mit auto_ptr oder falls es in container geworfen wird mit boost::shared_ptr zu packen und so weiter, sprich vector oder alles andere, was STL bietet.Wrappen ist ein Weg, führt jedoch zu einer Kappselung von über 40 structs, worauf ich keine lust habe.
Daher such ich eine Methode, wie ich die C structs vorverarbeiten kann, um damit vernünftig zu arbeiten, sich nicht um soviel Speicher zu kümmern und am Ende noch die gleiche Funktionalität bieten zu können
-
Seikilos schrieb:
...
Gibt es zu den Structs denn auch noch alte Funktionen, die damit arbeiten? Nur die Strukts für sich erscheinen mir etwas sinnbefreit, zumal das ganze anscheinend schon eine ganze Weile existiert.
-
Die Structs werden von dem Sun RPCGen in komplexen Funktionen verbraten, um diese zu Speichern und zu Laden, da wird dann noch ne Menge drauf gearbeitet.
-
Ich habe keine Ahnung, was RPCGen ist, aber wird beim Laden nicht auch Speicher für die char* allokiert?
-
Ja, das macht der RPC intern, der hat ein paar wuchtige Methoden dafür
-
Dann kapsel die Strukts doch mitsamt der Methoden weg. Das spart ordentlich Arbeit.
-
Interessant wäre für mich noch ein Weg, dies generisch zu machen, wobei C++ ohne Reflection und Interospection hier wohl nicht so gefügig gemacht werden kann, wie ich es gerne hätte