[C/C+] How do malloc() and free() work?
연결리스트로 malloc()와 free()를 구현하시오.
( malloc / free 사용금지 )
struct Chunk{
int size;
int free;
struct Chunk *prev;
struct Chunk *next;
char data[]; // 가변
}
먼저, 200 바이트, 300 바이트, 100 바이트 크기의 메모리를 순차적으로 할당합니다. 그다음, 300 바이트의 메모리를 해제하고, 250 바이트 크기의 메모리를 새로 할당해주세요.
출력 결과 예시는 다음과 같습니다:
Allocated: p1 ( 0x404050 )
p1_size = 300
data = 'Hello World'
Allocated: p2 ( 0x404194 )
p2_size = 200
data = '2024'
Allocated: p3 ( 0x404274 )
p3_size = 100
data = '1107'
Freed : p2 ( 0x404194 )
Allocated: p4 ( 0x4042f0 )
p4_size = 250
data = 'Happy Coding'
코드를 보고 판단합니다.
( malloc / free 사용금지 )
struct Chunk{
int size;
int free;
struct Chunk *prev;
struct Chunk *next;
char data[]; // 가변
}
먼저, 200 바이트, 300 바이트, 100 바이트 크기의 메모리를 순차적으로 할당합니다. 그다음, 300 바이트의 메모리를 해제하고, 250 바이트 크기의 메모리를 새로 할당해주세요.
출력 결과 예시는 다음과 같습니다:
Allocated: p1 ( 0x404050 )
p1_size = 300
data = 'Hello World'
Allocated: p2 ( 0x404194 )
p2_size = 200
data = '2024'
Allocated: p3 ( 0x404274 )
p3_size = 100
data = '1107'
Freed : p2 ( 0x404194 )
Allocated: p4 ( 0x4042f0 )
p4_size = 250
data = 'Happy Coding'
코드를 보고 판단합니다.
문제를 풀기 위해서는 로그인이 필요합니다.