๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ํ์์ฑ
์คํ(Stack) vs ํ(Heap)
- ์คํ: ์ปดํ์ผ ์์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ. ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ๊ด๋ฆฌํด์ฃผ์ด ์์ ํ์ง๋ง, ํฌ๊ธฐ๊ฐ ์ ํ์ ์ด๊ณ ์ ์ฐ์ฑ์ด ๋จ์ด์ง.
- ํ: ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋์ ์ผ๋ก ํ ๋น/ํด์ ํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ. ์ ์ฐํ์ง๋ง ๊ฐ๋ฐ์๊ฐ ์ง์ ๊ด๋ฆฌํด์ผ ํ๋ฏ๋ก ์ฑ ์์ด ๋ฐ๋ฆ.
C vs C++์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ์
C์ธ์ด
int* ptr = malloc(sizeof(int)); // ๋ฉ๋ชจ๋ฆฌ ํ ๋น
*ptr = 10;
free(ptr); // ๋ฉ๋ชจ๋ฆฌ ํด์ C++
int* ptr = new int; // ๋ฉ๋ชจ๋ฆฌ ํ ๋น
*ptr = 10;
delete ptr; // ๋ฉ๋ชจ๋ฆฌ ํด์
// ๋๋ ์ด๊ธฐ๊ฐ๊ณผ ํจ๊ป
int* ptr = new int(10); // 10์ผ๋ก ์ด๊ธฐํํ๋ฉฐ ํ ๋น
delete ptr;new์ delete์ ์ฅ์
- ํ์ ์์ ์ฑ: new๋ ํ ๋นํ๋ ํ์ ์ ์๊ณ ์์ด์ ์ ์ ํ ํฌ๊ธฐ๋ฅผ ์๋ ๊ณ์ฐ
- ์์ฑ์/์๋ฉธ์ ํธ์ถ: ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์์ฑ์๊ฐ, ์ญ์ ํ ๋ ์๋ฉธ์๊ฐ ์๋ ํธ์ถ
- ๋ฌธ๋ฒ์ ๊ฐ๊ฒฐ์ฑ: malloc๋ณด๋ค ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌ
๋ฐฐ์ด ํ ๋น
int* arr = new int[10]; // 10๊ฐ ์ ์ ๋ฐฐ์ด ํ ๋น
delete[] arr; // ๋ฐฐ์ด ๋ฉ๋ชจ๋ฆฌ ํด์ ([]์ ์ฃผ์!)Reference
๋ชจ๋์ ์ฝ๋. ch3. C++์ ์ธ๊ณ๋ก ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค. (new, delete)