Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » malloc?!?

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 < [ 2 ] [ 3 ] [ 4 ]
000
20.12.2003, 02:08 Uhr
Checker



ich weil eine doppelt verkettetliste aufbauen, habe aber das problem das ich wenn ich malloc aufrufen will immer NULL zurück bekomme. voran kann das liegen?

C++:
elem = (LIST*) malloc(sizeof(LIST));

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.12.2003, 08:10 Uhr
Pablo
Supertux
(Operator)


Wenn du NULL bekommst, heißt das, dass der Speicher, den du allokieren willst, nicht verfügbar ist. D.h. Wenn C nicht schafft sizeof(LIST) Bytes zu erstellen, wird NULL zurückgegeben, da malloc keinen Pointer zurückgibt, der irgendwo in den Wald zeigt.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 20.12.2003 um 09:48 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.12.2003, 09:48 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


oder sizeof(LIST) ergibt für den compiler NULL
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.12.2003, 09:54 Uhr
Pablo
Supertux
(Operator)


Zeig den Code der struct LIST. Vielleicht liegt es daran, wie @Flo sagt, dass siezof(LIST) NULL zurückgibt.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.12.2003, 13:39 Uhr
Checker



Das ist meine Struktur

C++:
typedef struct list
                {
                char s[116];
                struct list *last;
                struct list *next;
                }LIST;


es kann eigentlich nicht sein das kein speicher mehr frei ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.12.2003, 13:42 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


sollte eigentlich funzen probier mal so

C++:
#include <stdio.h>
#include <stdlib.h>

typedef struct list{char s[116];struct list *last;struct list *next;}LIST;

int main(){
LIST *elem = (LIST*) malloc(sizeof(LIST));
if(elem==NULL)printf("Scheisse\n");
else{
     printf("Hat geklappt\n");
    free(elem);
}
return 0;
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 20.12.2003 um 13:43 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.12.2003, 13:46 Uhr
Checker



So ähnlich habe ich es auch gemacht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.12.2003, 13:54 Uhr
Checker



OK update!

Der fehler leigt eo anders, undzwar bekomme ich eine eine Fehler Meldung von windoof mit einer Schutzverletzung, dann wird mein debugmodus gestartet und er zeigt mir einen fehler, weiß aber nicht was da falsch ist hier ist die Funktion bis zu dem Fehler:

C++:
int loeschen()
        {
        int l;
        int i;
        FILE *fp;
        typedef struct list
                {
                char s[116];
                struct list *last;
                struct list *next;
                }LIST;

        LIST *head;
        LIST *elem;
        LIST *ptr;

        fp = fopen("bootscr.txt", "r");

        for(i = 1; !feof(fp); i++)
                {
                if (i == 1);
                        {
                        elem = (LIST*) malloc(sizeof(LIST));
                        if (elem == NULL)
                        fgets(elem->s, 115,fp);
                        head->next = elem;


und bei der letzten zeile zeigt er einen fehler an.

Dieser Post wurde am 20.12.2003 um 13:54 Uhr von Checker editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
20.12.2003, 14:05 Uhr
0xdeadbeef
Gott
(Operator)


Du initialisierst head ja garnicht, der zeigt irgendwo wild in die Gegend. Außerdem macht das hier:

C++:
                        if (elem == NULL)
                        fgets(elem->s, 115,fp);


auch keinen Sinn. Wenn elem NULL ist, solltest du nicht in *elem schreiben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
20.12.2003, 14:12 Uhr
Checker



ok das mit if ist ein überbleibsel von einem test hatte ich ver gessen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ 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: