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.