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;
}