Hilfe! Seltsamer Pointer?!?
-
Hallo, Leute! Ich weiss gar nicht, ob ich in diesem Forum richtig bin, aber ich brauch mal wieder eure Hilfe!
Ich lasse folgende Schleife durchlaufen:
for(int i=0;i<kNumJunctions;i++) { m_theJunctions[i]->computeOutput(); }Die aufgerufene Function sieht so aus:
void PMDummyJunction::computeOutput() { (*m_output)=-(1-m_fIndependentLoss) *(m_fDependentLoss*m_trebleLossFilter->getOutput(m_input) +(1-m_fDependentLoss)*m_input); }Jetzt das Problem:
Just, wenn die Schleife durch ist, ist der "trebleLossFilter"-Pointer von
m_theJunctions[0] auf 0x80000000 und damit natürlich ungültig.
Wie kann das sein? Bis kurz vor ende der Schleife steht er noch richtig, nach dem letzten durchlauf ist er verändert...So sehen die Klassendeklarationen aus:
class PMDummyJunction :public PMWGJunction { public: PMDummyJunction(void); virtual~PMDummyJunction(void); void computeOutput(); float* getInputPtr(int pos){return &m_input;} void setOutputPtr(float* ptr,int pos){m_output=ptr;} void setFDependentLoss(float loss){m_fDependentLoss=loss;} void setFIndependentLoss(float loss){m_fIndependentLoss=loss;} void endConnectionPhase(){;} void setImpedance(float impedance,int pos){;} protected: float m_input; float *m_output; //Treble-loss filter related PMFirstOrderIir* m_trebleLossFilter; PMFilterDesigner filterDesigner; PMFilterDescriptor filterDescriptor; float m_fDependentLoss,m_fIndependentLoss; }; class PMWGJunction { public: PMWGJunction(void); virtual ~PMWGJunction(void); virtual void computeOutput()=0; virtual float* getInputPtr(int pos)=0; virtual void setOutputPtr(float* ptr,int pos)=0; virtual void endConnectionPhase()=0; virtual void setImpedance(float impedance,int pos)=0; protected: };Habt ihr ne Idee was da schief läuft?
Viiiieeelen Dank
Sören
-
Kommando zurück!
Hab ihn gefunden: Der output Pointer von m_theJunctions[5] war falsch gesetzt und hat mal eben den m_trebleLoss-Pointer ruiniert.
Ciao
Sören