2019. 5. 16. 03:22ใPROGRAMMING/C & C++
1. ๊ตฌ์กฐ์ฒด
๊ตฌ์กฐ์ฒด๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฌ๋ฌ ๊ฐ์ ์๋ฃํ๋ค์ ๋ฌถ์ด์
์๋ก์ด ์๋ฃํ์ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฆ, ์ฌ์ฉ์ ์ ์ ์๋ฃํ์ด์ฃ .
๊ตฌ์กฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํฉ๋๋ค.
struct ํค์๋ ์ดํ ์ค๊ดํธ ์์ ์์ ์ด ์ฌ์ฉํ๋ ์๋ฃ๋ค์ ๋ฃ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
typedef ํค์๋๋ฅผ ํตํด์๋ ์ด๋ฆ์ ๋ค์ ์ฌ์ ์ ํ ์ ์์ต๋๋ค.
๊ตฌ์กฐ์ฒด์ ์ ์ธ์ ์ด๋ฐ ์์ผ๋ก ์์ฃผ ์์ฝ๊ฒ ํ ์ ์์ต๋๋ค.
์ด๊ธฐํํ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ ํ ๋ ํด๋ ๋ฌด๋ฐฉํ๊ณ ,
๋ณ์ ์ ์ธ ์ดํ ๋ฐ๋ก ์ด๊ธฐํ๋ฅผ ํด๋ ์๊ด์ด ์์ต๋๋ค.
๋ฉค๋ฒ์ ๋ํ ์ ๊ทผ์ '.' ์ ํตํด์ ํ ์ ์๊ณ , ํฌ์ธํฐ ์ฌ์ฉ ์์๋ '->' ๋ฅผํตํด์ ์ ๊ทผํ ์ ์์ต๋๋ค.
๊ฐ๋จํ๊ฒ ๊ตฌ์กฐ์ฒด์ ๋ํด ์์๋ดค์ผ๋
์ด์ ์ค์ํ ๋ถ๋ถ์ธ ๊ตฌ์กฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
2. ๋ฉ๋ชจ๋ฆฌ ๋จํธํ (Memory Fragment)
๋ฉ๋ชจ๋ฆฌ ๋จํธํ๋
RAM์์ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ด ์์ ์กฐ๊ฐ์ผ๋ก ๋๋์ด์ ธ
๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ ์กด์ฌํ์ง๋ง, ํ ๋น์ด ๋ถ๊ฐ๋ฅํ ์ํ๋ฅผ ๋งํฉ๋๋ค.
์ฆ, ์ฝ๊ฒ ๋งํ๋ฉด ๋ด RAM์ ์ฌ์ ๊ณต๊ฐ์ ์์น์ ์ถฉ๋ถํ๋ค๊ณ ๋์ค๋๋ฐ, ์ด ๊ณต๊ฐ์ ์ฌ์ฉํ ์ ์๋ค๋ ๋ง์ ๋๋ค.
์๋ฅผ ๋ค๋ฉด, PC์ RAM์ด 8GB๊ฐ ์ฅ์ฐฉ๋์ด์๋ค๊ณ ๊ฐ์ ํฉ์๋ค.
๊ฒ์์ ์คํํ๋๋ฐ RAM์ด 4GB, ๋ฉ๋ก ์ ์คํํ๋๋ฐ 4GB๊ฐ ์๋ชจ๋๋ค๊ณ ํ ๋,
๋ฉ๋ชจ๋ฆฌ ๋จํธํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด 2๊ฐ์ ํ๋ก๊ทธ๋จ์ ๋์์ ์คํ์ํฌ ์ ์๋ ์ํ๊ฐ ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋จํธํ์๋
๋ด๋ถ ๋จํธํ(Internal Fragmentation),
์ธ๋ถ ๋จํธํ(External Fragmentation)
๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
๋ด๋ถ ๋จํธํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ๋,
ํ๋ก์ธ์ค๊ฐ ํ์ํ ์ ๋ณด๋ค ๋ ํฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋์ด์
ํ๋ก์ธ์ค์์ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ญ๋น๋๋ ์ํฉ์ ๋ปํฉ๋๋ค.
์ฆ, ๊ฒ์์ ์คํํ๋๋ฐ 4GB๋ง ํ์ํ๋ฐ, ์ด ์ด์์ผ๋ก ํ ๋น๋๋ ์ํฉ์ ๋งํ์ฃ .
์ธ๋ถ ๋จํธํ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋๊ณ ํด์ ๋๋ ์์ ์ด ๋ฐ๋ณต๋ ๋,
์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค๊ฐ์ค๊ฐ ์กด์ฌํฉ๋๋ค.
์ด๋, ์ค๊ฐ์ค๊ฐ์ ์๊ธด ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง์ด ์กด์ฌํ์ฌ
์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ถฉ๋ถํ์ง๋ง, ์ค์ ๋ก๋ ํ ๋นํ ์ ์๋ ์ํฉ์ ๋งํฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด, RAM์ 2GB ์ ๋ ์๋ชจํ๋ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๊ณ ,
๋ฐ๋ก ์ด์ด์ 4GB์ง๋ฆฌ ํ๋ก์ธ์ค๊ฐ ํ ๋น๋์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
2GB์ง๋ฆฌ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ์ํค๋ฉด, ๋ฉ๋ชจ๋ฆฌ์ ์ฒ์ ์ฃผ์๋ถํฐ 2GB๋งํผ์ ๊ณต๊ฐ์ด ์๊ธฐ๊ฒ ๋ฉ๋๋ค.
์ด๋ฐ ์์ผ๋ก ๋น ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ด๋ ๊ณผ์ ์ด ๋ฐ๋ณต๋๊ฒ ๋๋ฉด์
์ฌ์ ๊ณต๊ฐ์ ์์น์์ผ๋ก 4GB๊ฐ ์๋๋ฐ,
3GB์ง๋ฆฌ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํด์ผ ํ ๋, ๋ง๋ ํ ๊ณต๊ฐ์ด ์์ด์ง๊ฒ ๋ ๋
์ธ๋ถ ๋จํธํ๊ฐ ์๊ฒผ๋ค๊ณ ํฉ๋๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ํ ๋
์กฐ์ฌํด์ผ ํ ๋ถ๋ถ์ ๋ฐ๋ก ๋ด๋ถ ๋จํธํ์ ๋๋ค.
3. ๊ตฌ์กฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ
"32๋นํธ ํ๊ฒฝ์์ ๊ตฌ์กฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ๋จ์๋ 4๋ฐ์ดํธ์ ๋๋ค.
๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ(๊ธฐ๋ณธ ์๋ฃํ) ์ค์์ ๊ฐ์ฅ ํฐ ๋ฉค๋ฒ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ต๋๋ค."
์ด ๋ง์ด ๋ฌด์จ ๋ง์ธ์ง ํ ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์์์ ์ ์ํ ๊ตฌ์กฐ์ฒด๋ ๋ช ๋ฐ์ดํธ์ผ๊น์?
int ์๋ฃํ 4๋ฐ์ดํธ
short ์๋ฃํ 2๋ฐ์ดํธ
char ์๋ฃํ 1๋ฐ์ดํธ
double ์๋ฃํ 8๋ฐ์ดํธ
์ด ํฉ 15๋ฐ์ดํธ๊ฐ ๋์ค๋ค์.
๊ณผ์ฐ ์ ๋ง 15๋ฐ์ดํธ๊ฐ ๋์ค๋์ง sizoef ์ฐ์ฐ์ผ๋ก ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
ํ์ธ ๊ฒฐ๊ณผ 16๋ฐ์ดํธ๋ผ๋ ๊ฐ์ด ๋์์ต๋๋ค.
์ด์งธ์ ์ด๋ฐ ๊ฒฐ๊ณผ๊ฐ ๋์๋์ง ํ ๋ฒ ๋ถ์ํด๋ณด๊ฒ ์ต๋๋ค.
"32๋นํธ ํ๊ฒฝ์์ ๊ตฌ์กฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ๋จ์๋ 4๋ฐ์ดํธ์ ๋๋ค.
๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ(๊ธฐ๋ณธ ์๋ฃํ) ์ค์์๊ฐ์ฅ ํฐ ๋ฉค๋ฒ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ต๋๋ค."
์ฐ์ , ์ฐ๋ฆฌ๊ฐ ์ ์ํ ๊ตฌ์กฐ์ฒด ์์์ ๊ฐ์ฅ ํฐ ๋ฉค๋ฒ๋ double์๋ฃํ์ ๋๋ค.
double ์๋ฃํ์ ํฌ๊ธฐ๋ 8๋ฐ์ดํธ์ด๋ฏ๋ก 8๋ฐ์ดํธ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ ๊ธฐ์ค์ด ๋ฉ๋๋ค.
๊ตฌ์กฐ์ฒด์ ์ ์๋ ์์๋๋ก ํ ๋น์ ํด๋ณด๋ฉด
๋งจ ๋จผ์ int ์๋ฃํ์ ์ ์ธํ์ผ๋ฏ๋ก, 4๋ฐ์ดํธ๊ฐ ํ ๋น๋ฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ฒซ 8๋ฐ์ดํธ ์ค์ 4๋ฐ์ดํธ๋ฅผ ์๋นํ๊ฒ ๋์ฃ .
์ดํ ๋๋จธ์ง ๊ณต๊ฐ์ ๊ฐ๊ฐ ์์๋๋ก short(2๋ฐ์ดํธ), char(1๋ฐ์ดํธ) ์๋ฃํ์ ํฌ๊ธฐ๋งํผ ํ ๋น์ด ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ๋จ์ 1๋ฐ์ดํธ์ doubleํ์ ํ ๋นํ ์ ์์ผ๋, ์๋ก์ด 8๋ฐ์ดํธ ๊ณต๊ฐ์ ๊ฐ์ ธ์ค๊ฒ ๋์ฃ .
์ด๋ฌํ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด์ 15๋ฐ์ดํธ๊ฐ ์๋ 16๋ฐ์ดํธ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
์ฆ, ์ฐ๋ฆฌ๋ 1๋ฐ์ดํธ์ ๊ณต๊ฐ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ๊ฒ์ด์ฃ .
๊ทธ๋ผ ์ด๋ฒ์๋ ๋งจ ๋ง์ง๋ง์ ์๋ double ์๋ฃํ๊ณผ char ์๋ฃํ์ ์์น๋ฅผ ๋ฐ๊ฟ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ถ๋ช ๊ฐ์ ์๋ฃํ์ธ๋ฐ 8๋ฐ์ดํธ๋ ๋ ํฐ 24๋ฐ์ดํธ๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋์์ต๋๋ค.
๋ค์ ๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ํด ๋ณด๋ฉด
์ด๋ฌํ ํํ๋ก ํ ๋น์ด ์ด๋ฃจ์ด์ง ๊ฒ์ ์ ์ ์์ต๋๋ค.
๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ ๋ฉ๋ชจ๋ฆฌ ๋จํธํ๋ฅผ ์ผ์ผํค์ง ์๋๋ก
์ต๋ํ ๋ฉค๋ฒ ๋ณ์์ ์์๋ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
'PROGRAMMING > C & C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
9. [C / C++] ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋์ ํ ๋น (2) (0) | 2019.05.21 |
---|---|
8. [C / C++] ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋์ ํ ๋น (1) (0) | 2019.05.21 |
6. [C์ธ์ด] ํฌ์ธํฐ ์ดํดํ๊ธฐ (0) | 2019.05.15 |
5. [C์ธ์ด] ํจ์ ์ดํดํ๊ธฐ (0) | 2019.05.14 |
4. [C์ธ์ด] ๋นํธ ์ฐ์ฐ์ (0) | 2019.05.10 |