[C++] Vreemde Access Violation

Pagina: 1
Acties:

  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 16:01
Het volgende probleem doet zich voor:

Ik krijg in mijn programma steeds een access violation bij het aanmaken van een pointer naar een object van een zelfgeschreven klasse. Het vreemde is dat het zo af en toe werkt, tot ik nieuwe code ga toevoegen. Na het weghalen van de nieuwe code treedt doodleuk weer de zelf EV op.

Het gaat om deze code:

C++:
1
FtpConnection * conn = new FtpConnection("localhost", 21);


De klasse FtpConnection heeft de volgende constructor:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FtpConnection::FtpConnection(std::string host, int port)
{
        _iPort = port;
        _sHost = host;

        try
        {
                _sCommand = new TCPSocket();
        }
        catch (SocketException se)
        {
                MessageBox(NULL, se.what(), "Exception", MB_OK|MB_ICONINFORMATION);
        }
}


Wat kan hier de oorzaak van zijn? Ik ben nog niet zo heel lang bezig met C++ (een maandje ongeveer)...

Gebruikte IDE is Borland C++ Builder trouwens. Hierbij nog even een screenshotje:

Afbeeldingslocatie: http://hugodejong.net/got/error_ftp_project.png

[ Voor 7% gewijzigd door Koppensneller op 09-07-2007 14:22 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:20
Het vreemde is dat het zo af en toe werkt, tot ik nieuwe code ga toevoegen. Na het weghalen van de nieuwe code treedt doodleuk weer de zelf EV op.
:? Wat bedoel je hier ? Het werkt 'af en toe', dan wijzig je je code, compileer je opnieuw, en krijg je een Access Violation ?
Heb je al eens je code gedebugged (stap voor stap door je code gelopen), en gekeken waar deze AV precies optreedt ?

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Klinkt als heap corruption. De fout zit niet waar het probleem optreedt, maar ergens anders in je programma (daar waar je buiten je buffers schrijft, schrijft naar een nog nooit gealloceerde of al vrijgegeven pointer, pointers meerdere keren vrijgeeft of een pointer vrijgeeft die je nooit gealloceerd hebt)

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.


  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 16:01
Wat ik bedoel is:

Ik krijg meestal een Acces Violation van de regel code in het bovenste blok. Zo af en toe niet. Als het zaakje dan opnieuw gecompileerd gaat worden (dus bij wijzigingen in de code) komt de AV weer terug, ook al is het exact dezelfde code als ervoor.

Een breakpoint op die regel waar het object wordt aangemaakt zorgt ervoor dat de AV niet te voorschijn komt. Als ik er een plaats op de eerste regel van de constructor treedt hij wel op.

  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 16:01
.oisyn schreef op maandag 09 juli 2007 @ 14:32:
Klinkt als heap corruption. De fout zit niet waar het probleem optreedt, maar ergens anders in je programma (daar waar je buiten je buffers schrijft, schrijft naar een nog nooit gealloceerde of al vrijgegeven pointer, pointers meerdere keren vrijgeeft of een pointer vrijgeeft die je nooit gealloceerd hebt)
Dan ga ik eens even mijn programma nalopen. Bedankt voor de tip!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat je nu zegt maakt mijn post niet ineens minder waar :)
.edit: ah ok je had 'm nog niet gezien ;)

[ Voor 27% gewijzigd door .oisyn op 09-07-2007 14:43 ]

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.


  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 16:01
Nee ik was halverwege mijn bericht toen ik even werd gestoord. :)

Ik heb _alle_ onnodige code eruit gecomment, ge-doublechecked of er niet buiten buffers geschreven werd, gecontroleerd of er geen pointer dubbel werden vrijgegeven enzovoort, maar het heeft nog niet mogen baten. Het gaat echt om een paar regels code, het is namelijk absoluut nog geen groot project...
Pagina: 1