malloc & free
2022. 4. 3. 02:51ㆍC++
동적할당 malloc과 free에 대해 알아본다.
먼저 동적할당이란 프로그램 실행 중에 동적으로 메모리를 할당하는 것을 말한다.
메모리를 할당할때, 힙 영역에 할당한다.
중요한 점은 할당한 메모리는 free를 통해 꼭 해제해 주어야 한다. (그렇지 않는다면 메모리 누수가 발생한다. )
동적 메모리 할당은 다음과 같다.
(int *)malloc(sizeof(int)*4)
이는 아래 그림과 같이 힙 공간에 int타입 사이즈*4만큼의 메모리를 할당한 것이다.
이를 활용한 예시는 다음과 같다.
#include <iostream>
using namespace std;
int main(void)
{
int arr[4] = {1,2,3,4};
int *pArr;
//int 타입 사이즈 *4 만큼의 메모리를 할당해라.
pArr = (int *)malloc(sizeof(int)*4);
//malloc의 반환형이 void이기 때문에 (int *)을통해 형변환 한다.
//sizeof()는 자료형은 바이트로 계산해주는 연산자.
for(int i = 0; i<4; i++)
{
pArr[i] = arr[i];
}
//메모리 할당을 해제하는 것을 잊지 말자.
free(pArr);
return 0;
}
아래는 malloc과 free를 사용한 예제이다 .
#include <iostream>
using namespace std;
int main(void)
{
int num;
int *pArr;
int aver = 0;
cout<<"몇개의 과목을 입력하시겠습니까? "<<endl;
cin>>num;
//0 이하면 프로그램 종료
if (num <= 0)
{
return 0;
}
//과목 개수 만큼 메모리 할당.
pArr = (int*)malloc(sizeof(int) * num);
//점수를 받고 저장합니다.
for (int i = 0; i < num; ++i)
{
cout<<"점수 입력: ";
cin>>pArr[i]
}
//출력
for (int i = 0; i < num; ++i)
{
cout<<
}
//평균 출력
for (int i = 0; i < num; ++i)
{
aver+= pArr[i];
}
aver /= num;
cout<<"평균: "<<aver;
//동적할당 해제
free(pArr);
return 0;
}
출처: https://blockdmask.tistory.com/290 [개발자 지망생]
'C++' 카테고리의 다른 글
Member Initializer (0) | 2022.04.03 |
---|---|
new와 delete (0) | 2022.04.03 |
Reference (0) | 2022.04.03 |
template (0) | 2022.04.02 |
call-by-reference & call-by-value (0) | 2022.04.02 |