Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- string유형
- 범위 기반 for문
- c언어 괄호검사
- 입출력 관리자
- C언어 덱
- l-value참조자
- C언어 계산기 프로그램
- C언어 스택 연산
- IPv4 주소체계
- 백준 파이썬
- auto 키워드
- 알고리즘 조건
- 프로그래머스 푸드 파이트 대회
- 네트워크 결합
- const l-value참조자
- 주기억장치
- 값/참조/주소에 의한 전달
- 원형 연결 구조 연결된 큐
- 문자형 배열
- 문제해결 단계
- 회전 및 자리 이동 연산
- getline()함수
- 괄호 검사 프로그램
- 운영체제 기능
- LAN의 분류
- 프로그래머스 배열만들기4
- r-value참조자
- 논리 연산
- const화
- 유형 변환
Archives
- Today
- Total
chyam
[C++] - 동적 메모리 할당 본문
동적 할당이란?
- 실행 시간동안 사용할 메모리 공간을 할당하는 것입니다.
- 배열의 크기를 가변적으로 생성할 수 있습니다.
- 메모리 영역 중 힙 영역에 저장됩니다.
- 사용자가 원할때 메모리에 할당하고 해제할 수 있으며, 메모리를 해제하지 않을 경우 '메모리 누수' 가 발생합니다.
C++에서의 동적할당은 new 와 delete 연산자를 통해 수행됩니다.
1) 기본 자료형
int *p = new int;
*p = 10;
cout << *p; // 10
...
delete p;
- new 연산자는 데이터 타입의 크기만큼 힙으로부터 메모리를 할당받아 주소를 리턴합니다.
- delete 연산자는 포인터 변수가 가리키는 메모리를 힙으로 반환합니다.
int *p = new int(10);
delete p;
- 메모리를 할당받을 때 초기 값을 지정해서 초기화 할 수 있습니다.
2) 배열
int *pn = new int[3];
pn[0] = 2;
pn[1] = 4;
pn[2] = 5;
for(int i = 0; i < 3; i++){
cout << pn[i] << endl; // 2 4 5
}
...
delete[] pn;
int *pn = new int[3] {2,4,5};
for(int i = 0; i < 3; i++){
cout << pn[i] << endl; // 2 4 5
}
delete[] pn;
- 메모리를 할당받을 때 초기 값을 지정해서 초기화 할 수 있습니다.
int *p1 = new int;
int *p2 = new int;
...
delete p1,p2; //오류.
- 한번에 하나씩 해제할 수 있습니다.