speicherfehler
-
guten abend,
habe mich mal an einfach verketteten list versucht jedoch meckert er rum wenn ich die grösse des nicknames mit malloc() definieren will.hier mal der code:
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct _Liste { char *szNickname; struct _Liste *pNext; } Liste .... .. Liste *NeuesElement( char *szNickname ) { Liste *pNeu = NULL; pNeu->szNickname = (char*)malloc( sizeof( char ) * ( strlen( szNickname ) + 1 ) ); if( pNeu == NULL ) { puts("Nicht genuegend Speicher..."); exit( 1 ); } pNeu->pNext = NULL; strcpy( pNeu->szNickname , szNickname ); return pNeu; }
wie bereits erwähnt streikt er bei malloc().
was mache ich falsch ?über hilfe wäre ich sehr dankbar.
mfg reno
-
hat keiner von euch einen hilfreichen tipp ?
wäre wirklich sehr nett.
-
Du versuchst einen Nullzeiger (pNeu) zu dereferenzieren.
-
Bevor du den Speicher für die Zeichenkette anlegst, solltest du erstmal Speicher für ein Listenelement anlegen.
Probiers mal so:
Liste *NeuesElement( char *szNickname ) { Liste *pNeu=NULL; pNeu=(Liste*)malloc(sizeof(Liste)); pNeu->szNickname=(char*)malloc(sizeof(char)*(strlen(szNickname)+1)); ... }
[ Dieser Beitrag wurde am 24.01.2003 um 12:46 Uhr von funkygiggle editiert. ]
-
cool , jetzt klappts danke
-
Warum man den Rückgabewert von malloc nicht casten sollte, haben wir schon 1000 mal diskutiert!
[url]http://www.c-plusplus.net/ubb/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=10&t=002694 [/url]
(wär mal was für die FAQ Shade)
-
Original erstellt von kingruedi:
**Warum man den Rückgabewert von malloc nicht casten sollte, haben wir schon 1000 mal diskutiert!
**Eben, warum gibt es eigentlich new???
-
Original erstellt von MaSTaH:
**
Eben, warum gibt es eigentlich new???**Ich glaub du bist im falschen Forum gelandet