반응형

c언어 메모리 할당 해제 (malloc / free) - 구조체 (struct)에 적용

 

 

구조체를 활용하는 기존 방식

ex. struct 'vehicle'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* Passing structures using pointers */
#include <stdio.h>
 
// Structure vehicle
struct vehicle { int x, y; };
 
// type definition structure 'vehicle'
typedef struct vehicle vehicle;
 
// drive vehicle
struct vehicle drive(struct vehicle t, int dx, int dy) {
    t.x = t.x + dx;
    t.y = t.y + dy;
    return t;
}
 
int main() {
    struct vehicle truck = { 1127 };
    printf("truck - x: %d, y: %d\n", truck.x, truck.y);
 
    // Drive and print result
    truck = drive(truck, 1723);
    printf("truck - x: %d, y: %d\n", truck.x, truck.y);
}
cs

 

 

메모리 할당을 활용하여 구조체 초기화 후 좌표 이동

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/* Struct malloc */
#include <stdio.h>
#include <stdlib.h>
 
// Structure 'vehicle'
struct vehicle { int x, y; };
 
// typedef struct 'vehicle'
typedef struct vehicle vehicle;
 
// Allocate structure
vehicle *truck(int x0, int y0) {
    vehicle *= malloc(sizeof(struct vehicle));
    t->= x0;
    t->= y0;
    return t;
}
 
// Drive truck
void drive(struct vehicle *t, int dx, int dy) {
    t->= t->+ dx;
    t->= t->+ dy;
}
 
int main() {
    vehicle truckData = { 1127 };
    vehicle *truck = &truckData;
    printf("truck - x: %d, y: %d\n", truck->x, truck->y);
    
    drive(truck, 1723);
    printf("truck - x: %d, y: %d\n", truck->x, truck->y);
}
cs

 

 

 

반응형