46 lines
1.2 KiB
C
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);
|
|
}
|