Thread View: de.comp.lang.c++
3 messages
3 total messages
Started by Andre Deparade
Tue, 01 Aug 1995 14:58
eigenes new
Author: Andre Deparade
Date: Tue, 01 Aug 1995 14:58
Date: Tue, 01 Aug 1995 14:58
41 lines
1518 bytes
1518 bytes
Hi,
ich moechte mir ein eigenes new schreiben, dasz testet, ob der speicher
angefordert werden konnte oder nicht. bei nein wird das prg abgebrochen und
eine meldung ausgegeben: kein speicher in zeile x, datei bla.cc
unter c geht das mit preprozessormakros __FILE__, __LINE__ und einer funktion
void *my_malloc(size_t size, char *filename, int lineno)
{
void *tmp_ptr = malloc(size);
if (!tmp_ptr)
fprintf(stderr, "bla"...
}
und einem makro:
#define ex_malloc(size) my_malloc(size, __FILE__, __LINE__)
wird dann so gebraucht:
int int_ptr = ex_malloc(sizeof(int));
also, geht sowas in c++ mit new auch??
ich kann zwar einen operator new mit mehreren argumenten definieren
(das waeren dann der string bzw. das int), aber was musz ich dann in dem operator
new machen, um den korrekten speicher zu kriegen?
bisher habe ich
#define ex_new(typ) new(__FILE__, __LINE__) typ
void *operator new(size_t size, char *filename, int lineno)
{
void *tmp_ptr
tmp_ptr = //was musz hier hin??????
if (!tmp_ptr)
...
return(tmp_ptr);
}
danke im voraus!
dpi
Re: eigenes new
Author: Enno Sandner
Date: Tue, 01 Aug 1995 18:41
Date: Tue, 01 Aug 1995 18:41
31 lines
1466 bytes
1466 bytes
Einfach malloc aufrufen, z.B:
tmp_ptr=malloc(size ? size : 1);
Man sollte dann auch den delete-Operator durch eine eigene Version ersetzen.
Gruss
Enno
deparade@hagen.informatik.uni-dortmund.de (Andre Deparade):
>ich moechte mir ein eigenes new schreiben, dasz testet, ob der speicher
>angefordert werden konnte oder nicht. bei nein wird das prg abgebrochen und
>eine meldung ausgegeben: kein speicher in zeile x, datei bla.cc
> ...
>
>ich kann zwar einen operator new mit mehreren argumenten definieren
>(das waeren dann der string bzw. das int), aber was musz ich dann in dem operator
>new machen, um den korrekten speicher zu kriegen?
>
>bisher habe ich
>#define ex_new(typ) new(__FILE__, __LINE__) typ
>
>void *operator new(size_t size, char *filename, int lineno)
>{
> void *tmp_ptr
> tmp_ptr = //was musz hier hin??????
>
> if (!tmp_ptr)
> ...
> return(tmp_ptr);
>}
Re: eigenes new
Author: Joachim Zobel
Date: Tue, 01 Aug 1995 20:45
Date: Tue, 01 Aug 1995 20:45
25 lines
1027 bytes
1027 bytes
Andre Deparade (deparade@hagen.informatik.uni-dortmund.de) wrote:
[...]
: #define ex_new(typ) new(__FILE__, __LINE__) typ
: void *operator new(size_t size, char *filename, int lineno)
: {
: void *tmp_ptr
: tmp_ptr = //was musz hier hin??????
tmp_ptr = operator new (size);
: if (!tmp_ptr)
: ...
: return(tmp_ptr);
: }
Das sollte es tun.
Joachim
"... ein Geschlecht erfinderischer Zwerge, die fuer alles gemietet werden
koennen." - Bertolt Brecht - Das Leben des Gallilei
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads