Thuis
Contacten

    Hoofdpagina


Programmeren in C++ voor beginners

Dovnload 5.04 Mb.

Programmeren in C++ voor beginners



Pagina34/49
Datum25.10.2017
Grootte5.04 Mb.

Dovnload 5.04 Mb.
1   ...   30   31   32   33   34   35   36   37   ...   49

Access violation

Een van de meest voorkomende en verveldende run-time error is de access violation. Deze treedt op als er wordt gelezen/geschreven van/naar een illegaal geheugenadres. Onderstaande code laat een access violation onstaan:


std::vector v;

for (int i=0; ; ++i)

{

//Veroorzaak misschien een access violation



//door voorbij de std::vector te lezen.

Caption = IntToStr(i) + " : " + IntToStr(v[i]);



}
Als de fout wordt gedetecteerd verschijnt onderstaande melding en het schuldige statement wordt aangegeven in de Text Editor.

Bovenstaand gedrag treedt op terwijl we in Kylix werken. Sluiten we Kylix en starten de executable, dan verschijnt de volgende melding:

Deze melding is helemaal niet informatief.
De belangrijkste ergernis aan een access violation is dat deze niet altijd 'optreed'. Een access violation wordt immers niet door het programma zelf, maar door het operating system (Windows of Linux) gedetecteerd. Soms vind het operting system dit snel, soms laat. Een access violation wordt ook wel een tijdbom genoemd.
Doe jezelf een plezier en leer meteen een assert te schrijven voordat je een index operator aanschrijft:
assert( i >=0 );

assert( i < static_cast<int>( v.size()));

v[i] = /* iets */;

/* iets */ = v[i];


De static_cast is nodig omdat de methode size een unsigned int teruggeeft.
1   ...   30   31   32   33   34   35   36   37   ...   49


Dovnload 5.04 Mb.