์ฝ๋ฉ์ ํ ๋, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๋์ ํ ๋น์ ์ฌ์ฉํ๊ณค ํฉ๋๋ค.
์ํ๋ ๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ์ฌ์ฉ์ด ๋๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด์ง์.
์ฐธ๊ณ ๋ก ์ ์ ๋ณ์๋ค์ stack ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋๊ณ ๋์ ๋ณ์๋ค์ heap ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ฉ๋๋ค.
stack์์ญ์ ์ปดํ์ผ ๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฒฐ์ ๋๊ณ CPU์ ์ํด ๊ด๋ฆฌ๋์ด ํจ์ ํธ์ถ์ด ์๋ฃ๋๋ฉด ์ฌ๋ผ์ง๋๋ค. ์ ์ ์ ์ถ๊ตฌ์กฐ๋ก.
heap์์ญ์ ๋ฐํ์ ๋์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฒฐ์ ๋๊ณ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๊ตฌํ ๋งํผ OS๊ฐ ๋น๊ณต๊ฐ์ ์ฐพ์์ ํ ๋นํด์ค๋๋ค. ์ ์ ์ ์ถ ๊ตฌ์กฐ๊ฐ ์๋๊ณ ์ ๋์ ์ผ๋ก ํ ๋น/ํด์ ๋๋ฏ๋ก ๊ผญ ํด์ ๊ฐ ํ์ํฉ๋๋ค. (๋ฉ๋ชจ๋ฆฌ๊ฐ ์กฐ๊ฐ์กฐ๊ฐ ๋ฐฐ๋ถ๋์ด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์์)
1. 1์ฐจ์ ๋ฐฐ์ด ๋์ ํ ๋น
int* arr = new int[5]; //ํฌ๊ธฐ๊ฐ 5์ธ ์ผ์ฐจ์ ๋ฐฐ์ด ๋์ ํ ๋น
1์ฐจ์ ๋ฐฐ์ด์ ๋์ ํ ๋น์ธ ๊ฒฝ์ฐ, 1์ค ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ new ํค์๋๋ก ํฌ๊ธฐ๋ฅผ ํ ๋นํด์ฃผ๋ฉด ๋ฉ๋๋ค.
2. 2์ฐจ์ ๋ฐฐ์ด ๋์ ํ ๋น
2์ฐจ์ ๋ฐฐ์ด์ ๋์ ํ ๋นํ ๋๋ 2์ค ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ํ์ 1์ฐจ์ ๋ฐฐ์ด์ ์ฐ๊ฒฐํด์ฃผ๋ฉด ๋ฉ๋๋ค.
์ฆ, ์๋ ๊ทธ๋ฆผ์์ ๋ณผ ์ ์๋ฏ์ด ์ผ์ชฝ์ 1์ฐจ์ ๋ฐฐ์ด์ธ arr[0]์ ์ค๋ฅธ์ชฝ์ ํฌ๊ธฐ๊ฐ 4์ธ 1์ฐจ์ ๋ฐฐ์ด์ ์ฐ๊ฒฐํด์ค์ผ๋ก์จ 3x4 ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๋ง๋ค์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ฝ๋๋ก ํํํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
#include <iostream>
using namespace std;
int main() {
int **arr = new int*[3];//1. ํ ํฌ๊ธฐ๋ฅผ 3์ผ๋ก ๋์ ํ ๋นํด์ค
for (int i = 0; i < 3; i++) {//2. ๊ฐ ํ์ ๊ธธ์ด๊ฐ 4์ธ ๋ฐฐ์ด์ ํ ๋นํด์ค
arr[i] = new int[4];
}
for (int i = 0; i < 3; i++) { //3. ๋์ ํ ๋นํ ํฌ๊ธฐ ๋งํผ ๊ฐ์ ์
๋ ฅ๋ฐ๊ฒ ํจ
for (int j = 0; j < 4; j++) {
cin >> arr[i][j];
}
}
for (int i = 0; i < 3; i++) {//4. ๋์ ํ ๋นํ 2์ฐจ์ ๋ฐฐ์ด ํด์
delete[] arr[i]; //๊ฐ๋ก ํด์
}
delete[] map;//์ ์ฒด ํด์
return 0;
}
1. ํ ํฌ๊ธฐ๋ฅผ 3์ผ๋ก ๋์ ํ ๋นํด์ค
2. ๊ฐ ํ์ ๊ธธ์ด๊ฐ 4์ธ ๋ฐฐ์ด์ ํ ๋นํด์ค
3. ๋์ ํ ๋นํ ํฌ๊ธฐ ๋งํผ ๊ฐ์ ์ ๋ ฅ๋ฐ๊ฒ ํจ
4. ๋์ ํ ๋นํ 2์ฐจ์ ๋ฐฐ์ด ํด์
3. 2์ฐจ์ ๋ฐฐ์ด ๋์ ํ ๋น ํด์
๋์ ํ ๋น์ผ๋ก ๋ง๋ ๋ณ์์ ๋ฉ๋ชจ๋ฆฌ๋ ์ฌ์ฉ์ด ๋๋ ๋, ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. (์๋ฐ์ ๊ฒฝ์ฐ ๊ฐ๋น์ง ์ปฌ๋ ํฐ(garbage collector)๊ฐ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์์ ํด์ ํด์ฃผ์ง๋ง C์ C++์๋ ์์...ใ )
์ ์ฝ๋์์ ๋ณผ ์ ์๋์, ๊ฐ ํ์ ๋๋ฉด์ ๋์ ํ ๋นํ ๋ฐฐ์ด์ ํด์ ํด์ฃผ๊ณ ๋ง์ง๋ง์ผ๋ก ์ ์ฒด ๊ป๋ฐ๊ธฐ๋ฅผ ํด์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
new ์ฐ์ฐ์ ํ๋ฒ ์ฌ์ฉ์, delete ์ฐ์ฐ์ ํ๋ฒ์ ์ฌ์ฉํ๋ค! ๋ผ๊ณ ์๊ฐํ์๋ฉด ํธํฉ๋๋น ใ _ใ
4. ๋์ ํ ๋น๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ๊ธฐ
๋ ์๋ ๊ฒ์๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์ฉ