Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zugriffsverletzung bei dynamischem Array

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.01.2005, 16:36 Uhr
~Kev
Gast


So..dann mal los:

Ich habe einen Typ TPartikel:


C++:
struct TPartikel {
   float Pos[3];
   float Dir[3];
   float size;
   int  Time;
};


und eine Klasse die ein dynamisches Feld diesen Typs enthält:

C++:
class CPartikelEmitter{
   private:
      int Anz;
      TPartikel* PFeld;
   public:

      ...
}



Im Konstructor (nur dieser existiert) wird das Feld angelegt:

C++:
CPartikelEmitter::CPartikelEmitter(int Anz){

    CPartikelEmitter::Anz = Anz;
    PFeld = new TPartikel[Anz];

    ...
}



beim Aufruf einer Methode der Klasse wird auf das Feld zugegriffen.


C++:
...
for (i; i<Anz;i++){
   glColorf4(1.0,1.0,1.0,(PFeld[i].Time/MaxLifeSpan) )
   ...
}



Sobald dies passiert tritt die Zugriffsverletzung auf. Warum? Und Wie kann ich das Korrigieren?

Dieser Post wurde am 13.01.2005 um 16:59 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.01.2005, 17:01 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
CPartikelEmitter::Anz = Anz;



sollte


C++:
this->Anz = Anz



lauten...
Weiterhin würde ich im std-ctor Anz auf 0 setzen, dann gibts da keine probleme.
Ansonsten würde ich


C++:
PFeld = new TPartikel[Anz+1];



schreiben, dann gibts auch keine probleme wenn ausversehen mal Anz 0 ist!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.01.2005, 17:27 Uhr
Tommix



Vermutlich soll es auch

C++:
for (i = 0 /* oder so in der Art */; i<Anz;i++){
   glColorf4(1.0,1.0,1.0,(PFeld[i].Time/MaxLifeSpan) )


heißen.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.01.2005, 17:47 Uhr
~Kev
Gast


@Tommix: Das war der Fehler....auch logisch, wenn man i net initialisiert... Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: