c - er Malloc tildelt mere hukommelse end nødvendigt?

Indlæg af Hanne Mølgaard Plasc

Problem



Dette er en C-opgave for skolen, men jeg kører ind i noget underligt, at jeg ikke ved, om det er normalt eller ej.


Jeg er nødt til at tage kommandolinje argumenter og et eksempel på en er



  -ia.b



så inden for mit program fordeler jeg hukommelsen dynamisk med malloc


char *fileName = NULL;
fileName = malloc(strlen(argv[i]) * sizeof(char));
//error testing etc
strcpy(fileName, argv[i]);


Fungerer fint, men jeg kigger i hukommelsen via visuel studio debugger Dette er det, der bliver tildelt på hukommelsesstedet, hvilket for mig er mere plads, da det er nødvendigt:


0x01608b98 "ÍÍÍÍÍýýýýB`x1˜?`x1xf1¼O{º"


hvis jeg kaster malloc som sådan fileName = (char*)malloc(strlen(argv[i]) * sizeof(char)); får jeg dette tildelt i hukommelsen:


0x009d8d38 "ÍÍÍÍÍýýýýB"


I betragtning af at mit argument er 5 bytes, er malloc tildele mere hukommelse, så skal eller skal jeg bare gøre dette forkert?

Bedste reference


Normalt tildeler malloc hukommelse i stykker, der er nøjagtigt delelige af stykkens størrelse, svarende til 16 bytes (det er malloc tildeler klumper med et fundamentalt tilpasningskrav). Men du bør ikke stole på denne interne opførsel af malloc. Ellers er adfærd udefineret.