[C++/MFC] double[] in dialog geeft access violation?

Pagina: 1
Acties:

  • pinkwin|IA
  • Registratie: Juni 2003
  • Laatst online: 23-04-2004
Het lijkt wel alsof ik iets heel erg raars wil doen in mijn programma. Ik wil namelijk een double array gebruiken in een dialog schermpje. Dat gaat nog goed, maar bij het afsluiten van de dialog, krijg ik een access violation (0xC0000005).

Als er je een nieuw SDI project aanmaakt in ms vc++ 6 en deze code erin zet:
C++:
1
2
3
4
5
6
7
BOOL CAboutDlg::OnInitDialog(){
  CDialog::OnInitDialog();
  for (int i=0; i<25; i++);
    m_array[i] = i;
  }
  return TRUE;
}


In de header moet dan ook nog even de double m_array[] gedefinieerd worden.
In het runnen van de applicatie kan de about box opgevraagd worden, maar bij het afsluiten geeft de app een access violation.

Vast iets stoms dat ik vergeet, maar ik kan het niet vinden..

Ik zeg maar zo, ik zeg maar nix. dan zeg ik al veel te veel.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

is je array wel groot genoeg? (minstens 25 elementen in dit geval)
Waar krijg je de access violation?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • pinkwin|IA
  • Registratie: Juni 2003
  • Laatst online: 23-04-2004
de array krijg je bij het afsluiten van de about box. en de array is gedefinieerd als:
C++:
1
double m_array[];

dan wordt ie toch aangepast aan de benodigde grootte? Als ik in de about box een scherm laat zien met waardes uit de array doet ie dat wel goed

Ik zeg maar zo, ik zeg maar nix. dan zeg ik al veel te veel.


  • Schmoove
  • Registratie: Juli 2001
  • Laatst online: 20-08 11:58
Nou volgens mij moet je wel dimensies opgeven hoor. Een array is niet dynamisch (behalve CArray dan).

  • pinkwin|IA
  • Registratie: Juni 2003
  • Laatst online: 23-04-2004
Ik heb nu m_array[30] ervan gemaakt en nu laat hij wel het scherm goed sluiten. Raar, want ik kon wel de waardes van de array opvragen...

Ik zeg maar zo, ik zeg maar nix. dan zeg ik al veel te veel.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

duh, je zit in ongeinitializeerd geheugen te calcen. Dat kan toevallig goed gaan, maar eigenlijk is het gewoon fout :)

Je zou natuurlijk een std::vector<double> kunnen gebruiken, als je een dynamische array wilt. Die groeit automatisch in grootte als je elementen toevoegd met een van de methoden in die class.

[ Voor 3% gewijzigd door .oisyn op 25-06-2003 13:51 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1