메모리는 malloc -> 사용 -> free 패턴으로 사용됨.
메모리 할당(malloc : memory allocation)
해더파일 : stdlib.h
포인터 = malloc(크기);
성공하면 메모리 주소를 반환, 실패하면 null 반환
메모리 해제(free) - 반드시 해줘야됨.
free(포인터);
1
2
3
4
5
6
7
8
9
|
int *numPtr; // int형 포인터 선언
numPtr = malloc(sizeof(int)); // int의 크기 4바이트만큼 동적 메모리 할당
*numPtr = 10; // 포인터를 역참조한 뒤 값 할당
printf("%d\n", *numPtr); // 10: 포인터를 역참조하여 메모리에 저장된 값 출력
free(numPtr); // 동적 메모리 해제
| cs |
memset : memory set - 메모리를 설정하는 함수
해더파일 : string.h
memset(포인터, 설정할 값, 크기)
값 설정이 끝난 포인터를 반환
배열이나 구조체 등의 메모리의 모든 내용을 초기화(0) 설정 할 때 많이 사용.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include <string.h>
#include <stdio.h>
int main(void)
{
int arr[10];
int i;
for(i=0;i<10;i++)
{
printf("%d ",arr[i]);//쓰레기 값 출력
}
printf("\n");
memset(arr,0,sizeof(arr));//arr의 메모리를 0으로 설정
for(i=0;i<10;i++)
{
printf("%d ",arr[i]); // 0
}
printf("\n");
return 0;
}
| cs |
※ 변수는 stack에 생성, mallock 함수는 heap의 메모리 사용
출처 : c언어 코딩도장
댓글
댓글 쓰기