티스토리 뷰

6. 메모리 할당과 해제

✔  malloc 함수를 이용하면 메모리 할당이 가능하다

✔  할당된 메모리를 모두 사용한 후에는 반드시 free라는 함수를 사용해 메모리를 해제해주어야한다

✔  그렇지 않으면 메모리에 저장한 값이 쓰레기 값으로 남아 메모리 용량의 낭비가 발생하기 때문

✔  이러한 현상을 메모리 누수라고 한다

 

버퍼 오버플로우

할당받은 메모리를 초과하는 메모리를 사용하고자 할 때 발생하는 메모리 누수

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int *x = malloc(10 * sizeof(int));
    x[10] = 0; //버퍼 오버플로우 발생
    free(x);
    return 0;
}

✔  배열 x 에는 정수형 값을 총 10개 저장할 수 있다.

✔  배열의 index는 0부터 시작되므로, 배열 x 의 마지막 index는 9

✔  즉, 할당된 총 40바이트(int 4byte * 10) 메모리를 초과해서 값을 저장하고자 했기때문에, 버퍼 오버플로우가 발생 

 

 

 

 

[출처] 부스트코스 | 모두를 위한 컴퓨터 과학(CS50 2019)

댓글
«   2024/12   »
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
최근에 올라온 글
글 보관함
Total
Today
Yesterday