#include <stdio.h>
int main()
{
int *p = (int *)malloc((100*sizeof(int)));
p++;
free(p);
/* do something */
return 0;
}
Fragen:C Frage auf frei()
Wird der Speicher von der Stelle beginnen p + 1 frei sein (zB wenn malloc 0x1000 zurück, befreit der Speicher wird von 0x1004 sein, ein unter der Annahme, 4 Byte ganze Zahl)?
Gibt es anypitfalls dieses Codes abgesehen von der Tatsache, dass die 4 Bytes von 0x1000 (falls malloc 0x1000 zurück) nicht verwendbar sind (es sei denn Sie eine P-- tun und verwenden Sie die Adresse)
Ich habe Ihre Formatierung korrigiert. Bitte lesen Sie die Bearbeitungshilfe, um zu sehen, wie Sie den Code richtig formatieren. –
Für einige Hinweise nicht direkt mit Ihrer Frage, aber mit Ihrem Code: (1) in C, werfen Sie nicht die Rückkehr von 'malloc' Dies kann den Bug von "stdlib.h", wie in Ihrem verstecken Beispiel. Ihr Code kann dann fehlschlagen, wenn Sie von einer 32-Bit-Maschine zu 64 Bit wechseln. (2) nicht "neu erfinden" eine Unterschrift für "Haupt". In C 'int main()' und 'int main (void)' sind nicht gleich. –