Martin: Access Violation --> Warum?

Beitrag lesen

Moin Insanity,

nur keine falsche Scham wegen des Topics - wozu haben wir schließlich das Thema Programmiertechnik.

Ich hab mich mal wieder an einem c++-Programm versucht (WIN32) auch noch :).

Nichts gegen Win32 - aber C++ mag ich eigentlich nicht...

STRG+F5 gibts kein Problem :) Aber wenn ich per F5 den Debugger anschmeisse hagelts Access Violations.

Was ist, wenn du das compilierte Programm außerhalb der IDE startest? Gibt's dann die gleichen Fehlermeldungen?
Hast du's schon mal im Einzelschrittmodus versucht?

int count(char * pszChar)
{
  int i = 0;
  while(pszChar[i++])
  return i;
}

Erste Anmerkung: Wer ruft diesen Konstruktor auf, und welchen Wert hat dein pszChar zum Zeitpunkt des Aufrufs? Zeigt der auf sinnvolle Speicherinhalte oder irgendwo in die Wüste?

Zweite Anmerkung: Hinter dem while-Statement fehlt entweder ein Semikolon oder ein leerer Klammerpaar {}. So wie du es hier wiedergibst (also mit dem return als erste Anweisung nach dem while) wird die Funktion in jedem Fall sofort wieder verlassen, und zwar entweder mit dem return-Wert 1 oder mit einem undefinierten Rückgabewert, wenn pszChar zufällig auf ein Nullbyte zeigen sollte. Und undefinierte, d.h. zufällige Werte sind immer heikel, wenn man damit im Programm weiterarbeitet!

Versuch's also einfach mal mit einem leeren Block {} hinter dem while() - das könnte schon viel helfen!

Good luck,
  Martin