Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » zu wenig soeicher / assert

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.10.2003, 15:17 Uhr
~hilfeee
Gast


hallo!

mein programm ist sehr speicherintensiv.
ich glaube, dass es teils beim anfordern von neuem speicher mittels new keinen speicher zurückbekommt.
wie kann ich das erkennen? ich hab wo gelesen, dass man das mit assert macht. wie geht das und muss ich das bei jedem new machen.
kann man auch anders prüfen, ob man genügend speicher bekommen hat?
woher weiss man ,ob auf dem stack noch genügend platz ist??
danke!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.10.2003, 15:24 Uhr
virtual
Sexiest Bit alive
(Operator)


Ein standardconformer Compiler wirft eine std::bad_alloc Exception, wenn new schiefgeht. Wenn Du jedoch explizit new(nothrow) verwendest, wird keine Exception geworfen und dann ne NULL zurückgegeben.
Mit den Asserts funktioniert das so:

C++:
int* a = new int[100];
assert(a); // Prüfe, ob a!=NULL


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.10.2003, 15:26 Uhr
geissbock



aber wenn a==0 dann folgt automatisch der programmabbruch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.10.2003, 16:42 Uhr
(un)wissender
Niveauwart


Dann mach halt sowas:

C++:
int *mem = new (nothrow) int[100];
if(mem == 0) {
    //Was tun, wenn kein Speicher.
}


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 22.10.2003 um 16:43 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: