Мой код:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int *p = (int *)malloc(sizeof(int));
free(p);
*p = 42;
return 0;
}
Я создал указатель, затем указал его на выделенное пространство и, наконец, присвоил ему 42. На мой взгляд, это не должно работать, это должно вызвать ошибку сегментации, но это работает. Итак, почему?
PS: обычно я скомпилировал его с помощью Gcc в Linux.