Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » MFC Zugriffsverletzung-Schreibposition

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
08.11.2004, 13:47 Uhr
RAB



Hallo,

ich habe folgendes Problem:
Eine von CObject abgeleitete Klasse hat folgende Struktur:


C++:
class LightStoneData : public CObject
{
public:

    void init(int RawDataNumber, int PeaksNumber, int SDNNNumber);

    int SetRAWValues(int counter, int Std, int Min, float Sek, float SCL, float RawHeart);

    /*---------- Variablen ------------*/
    struct Time
    {
        int Std;
        int Min;
        float Sek;
    };

    struct RawHeartData
    {
    Time Timestamp;
    float SkinConductanceLevel;
    float HeartData;
    };
    
    int RawDataCounter;

    RawHeartData *RawData;

};


und folgenden Code:

C++:

void LightStoneData::init(int RawDataNumber, int PeaksNumber, int SDNNNumber)
{
    RawDataCounter = RawDataNumber;
    RawHeartData *RawData = new RawHeartData[RawDataCounter];

    for (int i=0;i<RawDataCounter;i++)
    {
        SetRAWValues(i,0,0,0,0,0);
    }

    PeaksCounter = PeaksNumber;
    HeartPeaks *Peaks = new HeartPeaks[PeaksCounter];

    SDNNCounter = SDNNNumber;
    HeartSDNN *SDNN = new HeartSDNN[SDNNCounter];

}

int LightStoneData::SetRAWValues(int counter, int Std, int Min, float Sek, float SCL, float RawHeart)
{
    RawData[counter].Timestamp.Std=Std; RawData[counter].Timestamp.Min=Min; RawData[counter].Timestamp.Sek=Sek;
    RawData[counter].SkinConductanceLevel=SCL; RawData[counter].HeartData=RawHeart;
    return 0;
}



Wenn ich SetRAWValues aufrufe bekomme ich folgende Debugger-Meldung:

Eine Ausnahme (erste Chance) bei 0x00413152 in aviplayer.exe: 0xC0000005: Zugriffsverletzung-Schreibposition 0xcccccccc.
Unbehandelte Ausnahme bei 0x00413152 in aviplayer.exe: 0xC0000005: Zugriffsverletzung-Schreibposition 0xcccccccc.


Was mache ich denn falsch? In einer Klasse sollten doch alle Zugriffe erlaubt sein, ist doch auch als public definiert.

Danke fürs überlegen.

Gruß, Armin.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.11.2004, 14:20 Uhr
Tommix



Hallo,

C++:
void LightStoneData::init(int RawDataNumber, int PeaksNumber, int SDNNNumber)
{
    RawDataCounter = RawDataNumber;
    RawHeartData *RawData = new RawHeartData[RawDataCounter];
...


RawData ist eine lokale Variable in init(), also etwas anderes, als das RawData in der zweiten Funktion. Vermutlich meinst Du

C++:
void LightStoneData::init(int RawDataNumber, int PeaksNumber, int SDNNNumber)
{
    RawDataCounter = RawDataNumber;
    RawData = new RawHeartData[RawDataCounter];
...


, wenn RawData ein Member von LightStoneData ist.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.11.2004, 14:22 Uhr
RAB



Auweia, Natürlich!

Danke. Manchmal sieht man den Wald vor Bäumen nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


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: