▣ 안녕하세요.
이번장에서는 메모리 할당에 대해 공부해보겠습니다.
메모리 할당은 프로그래밍에서 실행하는 동안 사용할 메모리 공간을 할당(배정, 몫을 나누는 것) 의미합니다.
▣ 그럼 왜 메모리 할당이 필요할까요?
우리가 프로그램을 만들 때 "내가 몇 기가짜리를 만들어야지"라고 계획을 하지 않습니다.
그렇게 계획을 하고 만들더라도 프로그램에 텍스트 입력 수, 이미지나 도형 크기 등등 메모리를 어느 정도 사용할지에 대한 부분을 모두 다 생각하며 제작하는 건 불가능합니다.
그렇기 때문에 프로그램을 만들고 실행 중 내가 필요한 메모리를 할당받고 필요 없을 때 반환하는 메모리 할당을 진행해야 합니다.
그럼 이제 코드를 작성하며 공부하겠습니다.
▣ int* p = (int*) malloc(sizeof(int)) 이 코드는 C언어에서 메모리 할당을 하는 코드입니다.
malloc() 함수에 매개변수 안에 메모리의 크기를 지정해주면 됩니다.
sizeof() 함수를 통해서 크기를 지정했습니다.
*p = 7; 코드로 할당한 메모리에 값을 지정하고
free(p); 코드로 메모리 반환을 반환했습니다.
메모리를 할당받고 다시 반환하지 않으면 프로그램이 끝나기 전까지 계속 사용 중이기 때문에 다시 사용할 수 없습니다.
그걸 메모리누수라고 합니다. 그래서 free() 함수로 반환해야 합니다.
▣ int* p2 = new int; 코드는 C++에서 메모리 할당을 할당하는 코드입니다.
new 키워드를 붙이고 메모리의 크기를 지정해주시면 메모리 할당이 됩니다.
delete(p2); 코드는 C++ 메모리 반환하는 코드입니다.
코드를 작성하고
8번째 줄에 커서를 두고 F9키를 누르면 커서를 위치한 줄에 브레이크 포인트가 지정이 됩니다.
브레이크 포인트는 그 지점까지 디버그를 하고 멈춘다라고 생각하시면 됩니다.
▣ 그리고 F5 키를 누르고 디버그 한 상태에서
메뉴에서 창에서 메모리를 선택하면 이렇게 메모리 영역이 나옵니다.
그럼 주소: 이 부분에 p라고 검색을 하면 p에 07이 들어있는 걸 확인할 수 있습니다.
▣ 이번에는 new 키워드를 사용한 메모리를 확인해 보겠습니다.
int* p2 = new int(8)이 코드처럼 C++에서 메모리 할당하는 코드에서는
이렇게 초기화 값을 넣어서 사용할 수도 있습니다.
메모리를 확인해보면 08이 들어가 있는 걸 확인할 수 있습니다.
'[ C++ ] > - C++ 문법공부' 카테고리의 다른 글
C++ 11장 [string] (0) | 2022.10.28 |
---|---|
C++ 10장 [this 포인터] (0) | 2022.10.27 |
C++ 8장 [포인터 객체] (0) | 2022.10.20 |
C++ 7장 [인라인 함수] (0) | 2022.10.13 |
C++ 6장 [클래스4] (0) | 2022.10.12 |
댓글