Я застрял в вопросе о распределении памяти, особенно о том, что происходит после операторов free ().Так, например, когда я освобождаю a и затем изменяю его адрес, будет ли все еще иметь старое значение или он получит адрес b?Становится ли висячий указатель, потому что я настраиваю его после освобождения?Выходные данные просто будут a и b с одинаковыми значениями, z-20 и w = 9?Буду признателен за любую помощь.Большое спасибо!
int* t = (int*) malloc(sizeof(int));
int* b = (int*) malloc(sizeof(int));
int* a = (int*) malloc(sizeof(int));
int w;
int z;
*a = 11;
*b = 9;
z = *a + *b;
w = *b;
*a = z;
free(a);
*t = 4;
b = &z;
a = b;
free(t);
printf("Printed results are:\n");
printf("*a=%d, *b=%d, z=%d, w=%d\n", *a, *b, z, w);