#include <stdlib.h>
void* malloc(size_t size)
루틴이나 메크로는 직접 숫자를 입력하기 보다는 malloc 안에 sizeof() 함수를 이용한다.
sizeof 이용 시 두가지 종류의 결과
실제 "x"의 크기가 런타임에서 알아질 때
int *x = malloc(10 * sizeof(int));
printf("%d\n", sizeof(x)); // 결과 : 4(포인터의 크기)
실제 "x"의 크기가 컴파일타임에서 알아질 때
int x[10];
printf("%d\n", sizeof(x)); // 결과 : 40(포인터가 가리키는 메모리의 크기)
-> sizeof는 함수가 아닌 연산자 이기 때문에 sizeof x는 컴파일 시간에 결정
컴파일 당시에는 malloc의 메모리 공간이 잡히지 않으므로 x의 크기인 4byte가 찍혀 나가게 된다.
#include<stdlib.h>
void free(void* ptr)
char *src = "hello";
char *dst;
strcpy(dst, src);
char *src = "hello";
char *dst = (char *)malloc(strlen(src) + 1); // +1은 /0 null 자리
strcpy(dst, src);
char *src = "hello";
char *dst = (char *)malloc(strlen(src)); // +1은 /0 null 자리
strcpy(dst, src);
int *x = (int *)malloc(sizeof(int));
printf("*x = %d\n", *x)
#include <stdlib.h>
void *calloc(size_t num, size_t size)
ex) malloc(10 X sizeof(int)); -> calloc(10, sizeof(int))
int *x = (int *)malloc(sizeof(int));
free(x);
free(x);
#include<unistd.h>
int brk(void* addr)
void *sbrk(intptr_t increment);