Language/C++
[C++] new์ delete
soyw906
2023. 6. 24. 21:42
๐ new?
C์์์ malloc๊ณผ ๊ฐ์ ์ญํ ๋ก, heap ์์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํจ
โถ ์ฌ์ฉ๋ฒ
Type* pointer = new Type; // Type ํฌ๊ธฐ์ ๊ณต๊ฐ์ ํ ๋น, pointer์ ์ฃผ์๊ฐ ์ ๋ฌ
// example
int* p = new int; // int ํฌ๊ธฐ์ ๊ณต๊ฐ ํ ๋น, ์ฃผ์๊ฐ p์ ๋ฃ๊ธฐ
/* ๋ฐฐ์ด์ ์ฌ์ฉ ์ */
Type* pointer = new Type[size];
// example
int* list = new int[10];
๐ delete?
C์์์ free์ ๊ฐ์ ์ญํ ๋ก, heap ์์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํจ
์ด ๋, delete๋ก ํด์ ํ ์ ์๋ ๊ณต๊ฐ์ ์ฌ์ฉ์๊ฐ new๋ฅผ ํตํด ํ ๋นํ ๊ณต๊ฐ๋ง ํด๋นํ๋ค.
*p = 10;
delete p; // p์ ํ ๋น๋ ๊ณต๊ฐ ํด์
/* ๋ฐฐ์ด ํด์ */
delete[] p;
๐ -> ์ . ์ ์ฐจ์ด์
. ์ ํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ์ง์ ์ ๊ทผ
/* Example */
class Animal {
public:
string name;
int age;
}
int main() {
Animal a;
a.name = "maru"; // .๋ฅผ ํตํด Animal class ๋ฉค๋ฒ๋ณ์ name์ "์ง์ " ์ ๊ทผ
a.age = 10;
return 0;
}
-> ์ ํฌ์ธํฐ๋ฅผ ํตํด ๋ฉค๋ฒ์ ์ ๊ทผ ( ex.x -> y ๋ (*x).y์ ๋์ผ )
/* Example */
class Animal {
public:
string name;
int age;
}
int main() {
Animal* a = new Animal; // ์๋ก์ด Animal a๋ฅผ heap์ ํ ๋น
a -> name = "maru"; // -> ๋ฅผ ํตํด Animal a์ name์ ์ ๊ทผ
a -> age = 10;
return 0;
}