Speicherproblem
-
Hallo,
ich habe ein kleine Problem mit dem Befehl malloc. Ich möchte für eine Struktur Speicherplatz reservieren, aber ich bekomme immer die Meldung das kein Speicher zum reservieren frei wäre.
Hier mein Code:typedef char* DATEN; struct TA { DATEN VName; DATEN VWert; struct TA *naechstes; }; VERWEIS meine_liste(char* name, char* wert) { VERWEIS liste; if( liste = (TA*) malloc( sizeof(TA) ) ) { printf("Not enough memory to allocate buffer\n"); getch(); exit(1); } if(liste) { liste -> VName = name; liste -> VWert = wert; //liste -> naechstes = meine_liste("",""); } return (liste); }
Wieso komme ich in den Fall das nicht genügend Speicher zur Verfügung steht? Das ist mein erster Versuch mit malloc zu arbeiten und ich würde mich freuen wenn mir da jemand weiterhelfen könnte.
Thx
-
Ach ja,
VERWEIS ist nur ein Pointer auf die Struktur, alsotypedef struct TA *VERWEIS;
-
DieterK schrieb:
Das ist mein erster Versuch mit malloc zu arbeiten
Und hoffentlich auch dein letzter. Schliesslich heisst es "C++Builder", wir arbeiten mit new/delete!
Verschoben nach "ANSI C".
-
DieterK schrieb:
if( liste = (TA*) malloc( sizeof(TA) ) )
malloc gibt null zurück wenns fehlschlägt.
So wärs richtig:
if( !(liste = (TA*) malloc( sizeof(TA) )) )
-
Jansen schrieb:
DieterK schrieb:
Das ist mein erster Versuch mit malloc zu arbeiten
Und hoffentlich auch dein letzter. Schliesslich heisst es "C++Builder", wir arbeiten mit new/delete!
Verschoben nach "ANSI C".
:p @Jansen warum so grätig, mit dem Builder kann man auch C-Programme erstellen, und Leuten helfen die damit Probleme haben
-
Na klar kann man mit dem BCB auch C-Programme erstellen, auch wenn das "Perlen vor die Säue" wäre.
Und was das Helfen angeht: wozu gibt es denn das "ANSI C"-Forum?
Was wir wohl beide nicht wollen ist, das nachher jemand in einem C++-Programm mit malloc/free rumhampelt, weil er so daran gewöhnt ist.
-
Das ein Newbie das Forum aussucht dessen Name zu seinem Kompiler passt, muß man doch nicht so abstrafen.
Sei mal nicht so elitär.
Alle Dll´s in Windows müssen mit C-Interface geliefert werden weil das ach so geniale C++ Imperium nicht in der Lage ist sich auf einheitliche Schnittstellen und Implementierungen zu einigen, so das man C++ dll´s von Compiler A nicht in Projekten von Compiler B nutzen kann.
Des wegen bin ich froh das ich nicht nur weiss wie man C++ schreibt sondern noch in de Lage bin C-Code zu schreiben.
Sonst schließe ich mich den Worten der Weisheit an
When I find my code in tons of trouble, Friends and colleagues come to me, Speaking words of wisdom: "Write in C." As the deadline fast approaches, And bugs are all that I can see, Somewhere, someone whispers: "Write in C." Write in C, Write in C, Write in C, oh, Write in C. LOGO's dead and buried, Write in C. ..to be continued Copyright not me