hey ich habe Probleme mit dem Operator sizeof in malloc. Siehe zum Beispiel den folgenden Abschnitt. Code-malloc (sizeof (s)) reserviert weniger Speicher als erwartet?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * copy(char *s)
{
char *t=malloc(sizeof(s));
char *ptr=s;
int i=0;
do
{
t[i++]=*ptr++;
}
while(*ptr!='\0');
return t;
}
int main()
{
char *s="hello adsjahsjkdhjkashdkjaskdasldjlasjdlajsdlkjaslkdjalsjdlasjdljasdljasdkljklsdjlasdsadasdasd";
char *b=copy(s);
printf("%s\n",b);
free(b);
return 0;
}
auf ideone, den Fehler gibt: - * glibc erkannt ./prog: free(): ungültige nächste Größe (schnell): 0x09bcf008 * *
Aber wenn ich ersetze malloc (sizeof (s)) durch malloc (strlen (s) +1), das Programm funktioniert perfekt. Also, was ist das Problem? HINWEIS: Dies ist nur ein kleines Prog, das ich erstellt habe, um das Problem zu demonstrieren, das ich in einem anderen Code hatte.
Wenn 'malloc' * ever * weniger als angefordert zuweist (außer für * none * in diesem Fall gibt es' NULL' zurück), dann haben Sie einen Fehler in der Implementierung gefunden - - Herzliche Glückwünsche! –