11. [C / C++] ๋ฌธ์์ด ์์์ ํฌ์ธํฐ
1. ๋ฌธ์์ด ์์(๋ฆฌํฐ๋ด)
๋ฌธ์์ด ์์๋ "HelloWorld"์ ๊ฐ์ด
ํ๋ก๊ทธ๋จ ์์ค ์์ ํฌํจ๋ ๋ฌธ์์ด์ ์๋ฏธํฉ๋๋ค.
(๋ฆฌํฐ๋ด : ์์ค์ฝ๋์ ๊ณ ์ ๋ ๊ฐ์ ๋ํํ๋ ์ฉ์ด
์ ์, ๋ถ๋ ์์์ ์ซ์, ๋ฌธ์์ด ๋ฑ๋ฑ)
๋ฌธ์์ด ์์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค์์ DATA ์์ญ์ ๋ฑ๋ก๋๋ค.
(๋ฌธ์์ด ์์๋ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ค์์
ํ ์คํธ ์ธ๊ทธ๋จผํธ(text segment)๋ผ๊ณ ๋ถ๋ฆฌ๋ ํน์ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ์ฅ๋๋ค.
ํ ์คํธ ์ธ๊ทธ๋จผํธ๋ ์ฝ๊ธฐ๋ ๊ฐ๋ฅํ์ง๋ง, ์ฐ๋ฆฌ๊ฐ ๋ณ๊ฒฝํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค.
read only data ์์ญ)
๋จผ์ ํฌ์ธํฐ ๋ณ์๊ฐ ์์ฑ๋๋ค.
๋ชจ๋ ๋ณ์๋ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ(data segment)๋ผ๊ณ ๋ถ๋ฆฌ๋ ์์ญ์ ์ ์ฅ๋๋ค. (STACK, HEAP์์ญ)
๋ฐ๋ผ์ ํฌ์ธํฐ ๋ณ์ pName1๋ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ ์์ญ์ ์์ฑ๋๋ค.
๋ฌธ์์ด ์์ "HelloWorld"๊ฐ ์ ์ฅ๋ ์ฃผ์๊ฐ ํฌ์ธํฐ ๋ณ์ pName1์ ์ ์ฅ๋๋ค.
๋ฌธ์์ด ์์๊ฐ ํ ์คํธ ์ธ๊ทธ๋จผํธ์ ์ ์ฅ๋๋ฏ๋ก,
๋ฌธ์์ด ์์๋ ์ฐ๋ฆฌ๊ฐ ๋ง์๋๋ก ๋ณ๊ฒฝํ ์๋ ์๋ค.
๋ฐ๋ผ์
char* pName1 = "HelloWorld";
strcpy(pName1, "Goodbye");
์ด์๊ฐ์ด ํฌ์ธํฐ ๋ณ์๋ฅผ ํตํ์ฌ ๋ฌธ์์ด ์์๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ฉด,
์ปดํ์ผ ์ค๋ฅ๋ ๋ฐ์ํ์ง ์์ง๋ง ์ด์์ฒด์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ํ๋ก๊ทธ๋จ์ ์คํ์ด ์ค์ง๋๋ค.
char* pName1 = "HelloWorld";
pName1 = "Goodbye";
ํฌ์ธํฐ ๋ณ์ p๋ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ์ ์์ผ๋ฏ๋ก ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
๋ฐ๋ผ์ ๋ฌธ์์ด ์์์ ์ฃผ์๋ฅผ p์ ์ ์ฅํ ์ ์๋ค.
char pName[] = "HelloWorld";
strcpy(pName, "Goodbye");
pName์ ๋ฐฐ์ด์ด ๋๊ณ , ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ์ ๋ฐฐ์ด์ด ์ ์ฅ๋๋ค.
๋ฐ๋ผ์ ๋ฌธ์ ๋ฐฐ์ด์ ์ฐ๋ฆฌ๊ฐ ์ผ๋ง๋ ์ง ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์๋ค.