voor C++ programmeurs: allocatie met 'new'
Wanneer ik dynamisch geheugen reserveer in een programma bestaat er altijd de mogenlijkheid dat er geen geheugen beschikbaar is. Meestal vang ik die exceptions af op de volgende manier:
Code:
// begin pseudo code
#include <new>
#include <iostream>
int main()
{
int dynamic_int = 64000; // gewoon willekeurig getal
char *memspace = NULL; // voorkom cross-memory reads/writes
try {
memspace = new char[dynamic_int];
} catch (bad_alloc &e) {
// breek het programma voortijdig af indien er geen geheugen vrij is
cerr << "Not enough memory" << endl;
exit (1);
}
return 0;
}
Is er iemand die een andere manier hanteert zoals met een new_handler of door te kijken of de pointer naar NULL wijst? Zo ja, welke manier gebruik je een waarom?
(ik vraag dit omdat ik een parseer algoritme ontwikkeld dat heeeeel veel manipuleert met dynamisch geheugen (kan helaas niet anders). Het checken op beschikbaar geheugen wil ik zo efficient mogenlijk doen zowel qua codeer stijl als processor overhead)
PS: Ik compile mijn code met g++-2.95 onder linux
|