Erstes Programm: "Laufzeit"fehler und Projektidee
-
regInfo000? schrieb:
Nur zur kenntnisnahme, ich habe sizeof entfernt und du hast mit typedef struct .... .... bereits eine globale Variable definiert.
Du hast keine Ahnung.
Du hast keine Ahnung von typedef, Deklaration und Definition.
Du hast keine Ahnung, wovon du redest.
-
Du musst dir dringend
realloc
ansehen!
Das ist eine Standardfunktion.Den Speicher vom Stringliteral aus Zeile 139 (der Leerstring) willst du irgendwann in Zeile 104 frei geben. Das geht nicht!
Eine void-Funktion mit einem Doppelzeiger als Paramter ist schlechtes Design.
-
Streng genommen wird free("") nicht aufgerufen, denn vor jedem removeChar wird einmal append/replaceChar aufgerufen... Aber vom Design her ist das nicht so Banane.
Aber dann bleibt eigentlich nur ein Array mit vorher festgelegter Größe oder ein pointer auf irgendeine Datenstruktur oder eine globale Variable übrig.
Bei einer festgelegten Größe darf der Binärbaum nicht tiefer/höher als z. B. 20 sein. (2^20 ist auch schon viel, aber ein Binärbaum kann immer auch eine Liste sein.)
Es ginge auch ein integer typ, 0==nicht gefunden, 1==Wurzel, 5==L usw.
Selbstverständlich ist das neu allokieren und kopieren nicht gerade schnell, aber zum lernen ist das 1a.
Bibliotheksfunktionen, Schnittstellen oder wie auch immer kommen erst dran, wenn ich die einfachen Sachen gelernt habe.
Frage,: was ist zulässig (was passiert nach der Abarbeitung einer Funktion):
return &321;
int i = 321; return &321;
int i = 321; return i;
?
Ich muss das wissen, ob ich z. B.:
char *ptr = ""; char **ptrptr = &ptr; doSomethingWith(ptrptr); return ptr or *ptrptr;
schreiben darf, wegen automatischen Variablen und so etwas. - Danke.
-
regInfo000? schrieb:
Streng genommen wird free("") nicht aufgerufen, denn vor jedem removeChar wird einmal append/replaceChar aufgerufen..
Die Zeile 104 ist in appendChar.
Aufrufreihenfolge ist:search (Z141)-> search1 (Z128)-> appendChar (Z104)-> free -> bang!
Dein Code gekürzt:
char *ptr = NULL; // handle it doSomethingWith(&ptr); return ptr; // der Zeiger ptr hört hier auf zu existieren, aber nicht das, worauf er zeigt (wegen malloc aus doSomethingWith).
-
Nabend,
ich möchte eine Zahl (int) als Binärzahl / in Binärformat der Länge 2 per/via printf() in ANSI-C auf dem Terminal ausgeben.
Hintergrund:
int i = ((a-1)<<1)|(b-1); printf("Mode: %b\n", i);
%2b funktioniert nicht.
Querverweis (nicht Stack Overflow): http://www.osxentwicklerforum.de/index.php?page=Thread&threadID=806
Was muss ich jetzt zu tun?
-
regInfo000? schrieb:
Querverweis (nicht Stack Overflow): http://www.osxentwicklerforum.de/index.php?page=Thread&threadID=806
Was muss ich jetzt zu tun?
Den verlinkten Thread lesen?