009
06.03.2007, 13:37 Uhr
~tecs
Gast
|
Okay, um das Bild einbisschen zu schärfen: Die Initialisierung im Programmquellcode hätte momentan folgende Struktur
C++: |
//Start RTsys* rtsys = new RTsys; ... rtsys->init_phase=true; ... //Abfrage, ob DSsys verwendet wird oder nicht. if (rtsys->init_phase) { rtsys->dssys = new DSsys; }
//Init (Beispielsweise aus einer Konfigdatei) //Dynamische Übergabe der Anzahl der Aktionen rtsys->dssys->num_action=3; //weitere Konfigurationsmöglichkeiten sollen am Beginn möglich sein //darunter fallen etwa das Festlegen der Anzahl der Tilings oder die Mem-Größe ... if (rtsys->init_phase) { rtsys->dssys->fwerte = new float[rtsys->dssys->num_actions]; rtsys->dssys->Q = new float[rtsys->dssys->num_actions]; rtsys->dssys->theta = new float[rtsys->dssys->memory_size]; rtsys->dssys->e = new float[rtsys->dssys->memory_size];
rtsys->dssys->F = new int*[rtsys->dssys->num_actions]; for (int i=0;i<rtsys->dssys->num_actions; i++) rtsys->dssys->F[i]=new int[rtsys->dssys->num_tilings];
rtsys->dssys->nonzero_traces = new int[rtsys->dssys->max_nonzero_traces]; rtsys->dssys->nonzero_traces_inverse = new int[rtsys->dssys->memory_size]; }
//Ende delete rtsys;
/*------------*/
|
@FloSoft:
C++: |
RTsys::RTsys() { init_phase = true; dssys = new DSsys; // <-- hier so wärs vom design her dann ok }
RTsys::~RTsys() { if(dssys) delete dssys; }
|
jupp. Aber wäre das notwendig, wenn man noch nicht weiss, ob man dssys überhaupt benötigt!?
@0xdeadbeef: > Das if(dssys) ist da übrigens überflüssig, delete NULL; macht nichts. Das mit if(**) sehe ich häufig in verschiedenen Quellcodes... habe es deswegen so übernommen. Und warum setzt man einen Zeiger nach dessen Löschung auf NULL?
> Auch frage ich mich, warum RTSys::dtsys auf dem Heap liegen muss,.. Bei der Arbeit mit den C/C++ S-Funktionen unter MATLAB/Simulink stellte sich in meinen Fall (sicherlich auch bedingt durch fehlendes "Wo steht das genau beschrieben"-Wissen) diese Notwendigkeit heraus. Es geht dabei vorallem um das Verwalten und Setzen von globalen Variablen im Zusammenspiel zwischen dem Matlab Workspace, der Simulationsumgebung und den verwendeten C/C++ Funktionen. Also wenn sich zufällig damit jemand auskennt... - ich weiss falsches forum Mir gehts vorallem darum, dass die Strukturen stimmig sind, und ich nicht großartig gegen Konventionen etc. verstosse bzw. neue Denkanstösse bekomme |