Der Code ist wie folgt:Kann ich statische und automatische Variablen in C frei()?
#include <stdlib.h>
int num = 3; // Static external variable
int *ptr = #
int main(void)
{
int num2 = 4; // Automatic variable
int *ptr2 = &num2;
free(ptr); //Free static variable
free(ptr2); //Free automatic variable
return 0;
}
Ich versuche, den obigen Code zu kompilieren und es funktioniert, ich bin neugierig macht die free()
Funktion der Lage, sowohl die statischen Variablen und auch automatische Variable zu befreien? Oder im Grunde tut es nichts?
Es "funktioniert" für ausreichend niedrige Qualitätsdefinition von "funktioniert". Es kann auch auf dem gleichen System, dem gleichen Compiler oder verschiedenen Kompilierungsoptionen abstürzen. Es ist einfach ** undefiniertes Verhalten ** - alles kann passieren, sogar etwas erwartet. – Jens