Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

AriesT

Frischling

  • »AriesT« ist der Autor dieses Themas

Beiträge: 24

Wohnort: Bei Frankfurt

Beruf: Azubi IT Kaufmann

  • Private Nachricht senden

1

06.08.2009, 13:09

Asserts: Mehrere Fehler anzeigen lassen?

Hallo ihr Lieben,

ich habe ne Frage zum Thema "assert". Im Buch werden ja einige Beispiele genannt und gemeint, es eigent sich gut, um Speicherlecks etc. anzeigen zu lassen, wenn ne Variable falsch deklariert wurde etc.

Jetzt habe ich einfach mal das Listing 8.17 und 8.18 zusammengewürfelt (Zeiger Assert und For-Scheifen Assert) und habe festgestellt, dass immer nur das erste Leck angezeigt wird, wenn ich das Programm ausführe.

In meinem Falle das Zeiger Leck.

Gibt es irgendeine Möglichkeit, dass er mir beide Fehler gleichzeitig anzeigt?

Hier nochmal der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <assert.h>

int main()
{
        //  Variablen

    int *pZeiger = NULL;

    pZeiger = new int;

        //  Zeiger wird absichtlich verfälscht

    pZeiger = NULL;

        //  Wert zuweisen, aber erst Zeiger prüfen.

    assert (pZeiger);
    *pZeiger = 123;

        //  Speicher freigeben falls reserviert

    if (pZeiger != NULL)
    {
            delete (pZeiger);
            pZeiger = NULL;
    }

    for (int i=0; i<10; i++)
    {
            //  Zählvariable wird ungültig gemacht

            i = 11;
            
            //  i wird geprüft

            assert (i<10);
    }
return 0;
}


Wie gesagt, er zeigt nur "Assertion failed in Line 15" an und nicht zusätzlich in Line 31, wo der Zähler geprüft wird.

2

06.08.2009, 13:14

nein, das liegt daran, wie assert funktioniert: es überprüft die bedingung, und wenn die falsch ist, briacht das programm ab und es gibt diese meldung. Dein Programm kommt also gar nicht bis zum assert in der for-Schleife, da es schon vom assert in line 15 gestoppt wird.

AriesT

Frischling

  • »AriesT« ist der Autor dieses Themas

Beiträge: 24

Wohnort: Bei Frankfurt

Beruf: Azubi IT Kaufmann

  • Private Nachricht senden

3

06.08.2009, 13:50

Gut, danke. :)

Werbeanzeige