clab/c/ex7.c
2024-06-28 09:09:03 +01:00

46 lines
1.2 KiB
C

#include <stdio.h>
#include <stdlib.h>
#define log_2d(pointer) \
printf("Value: %p, %u, %u\n", pointer, pointer->x, pointer->y)
#define log_3d(pointer) \
printf("Value: %p, %u, %u, %u\n", pointer, pointer->x, pointer->y, \
pointer->z)
typedef struct Point2D {
int x, y;
} Point2D;
typedef struct Point3D {
int x, y, z;
} Point3D;
int main(void) {
printf("Allocation Thinkering: \n");
Point2D *heap_point_2d = malloc(sizeof(Point2D));
Point2D *heap_point_2d_2 = malloc(sizeof(Point2D));
Point3D *heap_point_3d;
log_2d(heap_point_2d);
*heap_point_2d = (Point2D){1, 2};
*heap_point_2d_2 = (Point2D){3, 4};
heap_point_3d = (Point3D *)(heap_point_2d);
log_3d(heap_point_3d);
log_2d(heap_point_2d);
log_2d(heap_point_2d_2);
free(heap_point_2d);
log_2d(heap_point_2d);
log_2d(heap_point_2d_2);
log_3d(heap_point_3d);
heap_point_2d = malloc(sizeof(Point2D));
*heap_point_2d = (Point2D){5, 6};
log_2d(heap_point_2d);
log_2d(heap_point_2d_2);
log_3d(heap_point_3d);
free(heap_point_2d_2);
log_2d(heap_point_2d);
log_2d(heap_point_2d_2);
log_3d(heap_point_3d);
exit(0);
}