Moin,
Die Source enthält u.a.:
char b=0;
char *a;
a=(char*) malloc(b);
free(anfang);//<- passierts: run-time check failure #2 stack around
the variable 'b' was corrupted
Ich denke mal, anfang soll a heißen, oder? Ansonsten gibt bitte den Codeteil an, aus dem anfang stammt.
Ansonsten ist der Fehler für mich klar:
char b = 0;
Hier bekommt b den Wert 0.
a = (char *)malloc(b);
Hier rufst du malloc auf. b hat den Wert 0. Ergo steht dort malloc(0).
Daher dürfte gar kein Speicher reserviert werden...
free(a);
Hier willst du einen Speicherbereich der Länge 0 freigeben. Das MUSS schiefgehen.
Keiner Tipp noch: Insbesondere bei C-Strings würde ich nicht mit malloc arbeiten, sondern mit calloc. Z.B. reserviert dir
char *str;
str = calloc(256, sizeof(char));
Speicher für einen String mit 255 Zeichen (das letzte ist für '\0'). Netterweise setzt calloc auch noch alles auf '\0', so dass der String in jedem Fall terminiert ist. Bei malloc ist der Zustand des Speichers nicht definiert. Bei malloc musst du noch ein memset hinterhermachen.
Gruß
Stareagle