#include #include // For malloc and free int main(){ // What is this? int * p = (int*)malloc(sizeof(int)); p = NULL; // malloc twice? char *char_array; char_array = (char*)malloc(50*sizeof(char)); char_array = (char*)malloc(25*sizeof(char)); // free twice? int* int_array; int_array = (int*) malloc (100 * sizeof(int)); printf("int_array = %p, int_array[0] = %d\n", int_array, int_array[0]); free(int_array); //free(int_array); // What happens here? compile time error? runtime? printf("int_array = %p, int_array[0] = %d\n", int_array, int_array[0]); // What happens here? int_array[0] = 5; int_array[2] = 4; printf("int_array = %p, int_array[0] = %d\n", int_array, int_array[0]); printf("int_array[2] = %d\n", int_array[2]); // old and new things int *old_thing = (int*)malloc(sizeof(int)); printf("old_thing = %p\n", old_thing); free(old_thing); printf("old_thing = %p after free\n", old_thing); int *new_thing = (int*)malloc(sizeof(int)); printf("new_thing = %p\n", new_thing); printf("old_thing = %p\n", old_thing); *new_thing = 19; *old_thing = 17; // ?? printf("*new_thing = %d\n", *new_thing); printf("*old_thing = %d\n", *old_thing); return 0; }