zwei Zeiger mit malloc()
-
Hallo,
ich bin auf ein weiteres Problem mit malloc() gesotßenIch möchte mit malloc() für zwei verschiedene Zeiger (ptr1 u. ptr2) Speicher allocieren. Anschließend schreibe ich in das erste Element der Zeiger einen Buchstaben und gebe Adresse und Inhalt der Zeiger aus.
Unter Borland Turbo C werden zwei GLEICHE Adressen ausgegeben - und der Buchstabe 'B'.
In Visual C++ habe ich es spaßeshalber probiert - und es funktioniert wie eigentlich erwartet (verschiedene Adressen und Inhalte)Leider bin ich an TurboC gebunden, da das Programm später unter DOS laufen soll.
kann mir da jemand helfen???
#include <stdio.h> #include <conio.h> int main() { char *ptr1, *ptr2; ptr1 = (char *) malloc(20); *ptr1 = 'A'; ptr2 = (char *) malloc(20); *ptr2 = 'B'; printf("Adresse ptr1 = %p\n", ptr1); printf("Adresse ptr2 = %p\n", ptr2); printf("ptr1: %c ; ptr2: %c \n", *ptr1, *ptr2); if(ptr1) free(ptr1); if(ptr2) free(ptr2); getch(); return 0; }
Gruß
Poolplayer
-
Ich habe jetzt zwar noch weniger Haare als eh schon, doch glücklicher weise habe ich für alle malloc()-Probleme die Lösung selbst gefunden:
Das obige Beispiel funktioniert NUR NICHT, weil die stdlib.h und alloc.h NICHT eingebunden ist - gemeinerweise kann man trotzdem FEHLERFREI compilieren!!!
Borland TurboC V3.1:
Unter Options-Debugger kann man die Heap-size einstellen.
Standardmäßig steht diese auf 64k leider kann man Sie nur auf maximal 640k erhöhen - was für mich allerdings ausreichtGruß
Poolplayer