1. λ©λͺ¨λ¦¬ λμ ν λΉμ κ°λ μ΄ν΄
λ©λͺ¨λ¦¬ λμ ν λΉμ νλ‘κ·Έλ¨ μ€ν μ€μ νμν λ©λͺ¨λ¦¬ 곡κ°μ ν λΉνκ³ μ¬μ©νλ κΈ°μ μ λλ€. μ μ ν λΉκ³Όλ λ¬λ¦¬, νλ‘κ·Έλ¨μ΄ μ€νλλ λμμ λμ μΌλ‘ νμν λ§νΌμ λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ ν΄μ ν μ μμ΅λλ€. μ΄λ νλ‘κ·Έλ¨μ μ μ°μ±κ³Ό ν¨μ¨μ±μ λμ΄λλ° λμμ μ€λλ€.
λ©λͺ¨λ¦¬ λμ ν λΉμ μ£Όλ‘ 'new'μ 'delete' μ°μ°μλ₯Ό μ΄μ©νμ¬ μνλ©λλ€. 'new' μ°μ°μλ λ©λͺ¨λ¦¬λ₯Ό ν λΉνκ³ , 'delete' μ°μ°μλ ν λΉλ λ©λͺ¨λ¦¬λ₯Ό ν΄μ νλ μν μ ν©λλ€. λ©λͺ¨λ¦¬ λμ ν λΉμ μ¬μ©νλ μ£Όμ μ΄μ λ λ€μκ³Ό κ°μ΅λλ€:
- νμν λ§νΌμ λ©λͺ¨λ¦¬ 곡κ°μ λμ μΌλ‘ ν λΉνμ¬ μμμ ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μμ΅λλ€.
- νλ‘κ·Έλ¨μ μ€ν μ€μ νμν λ©λͺ¨λ¦¬μ ν¬κΈ°μ μλͺ μ£ΌκΈ°λ₯Ό λμ μΌλ‘ μ‘°μ ν μ μμ΅λλ€.
- μ€λ³΅λ μ½λμ μμ±μ λ°©μ§νμ¬ μ½λμ μ¬μ¬μ©μ±κ³Ό κ°λ μ±μ λμΌ μ μμ΅λλ€.
λ©λͺ¨λ¦¬ λμ ν λΉμ νλ‘κ·Έλ¨ κ°λ°ν λ λ§μ΄ μ¬μ©λλ©°, νΉν λ°μ΄ν° ꡬ쑰μ κ΄λ ¨λ μμ μμ μ μ©ν©λλ€. νμ§λ§ λΆμ μ νκ² μ¬μ©νκ±°λ κ΄λ¦¬νμ§ μμ κ²½μ° λ©λͺ¨λ¦¬ λμ(memory leak)μ κ°μ λ¬Έμ κ° λ°μν μ μμΌλ―λ‘ μ‘°μ¬ν΄μΌ ν©λλ€. μ΄μ λν μμΈν λ΄μ©μ μ΄ν νλͺ©μμ λ€λ£¨λλ‘ νκ² μ΅λλ€.
2. λμ ν λΉμ μν 'new' μ°μ°μ
λ©λͺ¨λ¦¬ λμ ν λΉμ μν΄ C++μμλ 'new' μ°μ°μλ₯Ό μ 곡ν©λλ€. 'new' μ°μ°μλ ν(heap)μ΄λΌλ λ©λͺ¨λ¦¬ μμμμ λμ μΌλ‘ λ©λͺ¨λ¦¬λ₯Ό ν λΉν΄μ€λλ€.
λμ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬λ λ€μκ³Ό κ°μ νμμΌλ‘ μ¬μ©λ©λλ€:
ν¬μΈν°_μλ£ν λ³μ_μ΄λ¦ = new μλ£ν;
μμ λ¬Έλ²μμ ν¬μΈν°_μλ£νμ λμ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬μ μ£Όμλ₯Ό μ μ₯νλ λ³μμ μλ£νμ μλ―Έν©λλ€. λ³μ_μ΄λ¦μ ν΄λΉ λ³μλ₯Ό μλ³νκΈ° μν μ΄λ¦μ μ§μ νλ©°, μλ£νμ ν λΉλ λ©λͺ¨λ¦¬ 곡κ°μ μλ£νμ μ§μ ν©λλ€.
μλ₯Ό λ€μ΄, μ μν λ³μμ λ©λͺ¨λ¦¬λ₯Ό λμ μΌλ‘ ν λΉνλ €λ©΄ λ€μκ³Ό κ°μ΄ μμ±ν μ μμ΅λλ€:
int* ptr = new int;
μμ μμ μμλ 'new int'λ₯Ό ν΅ν΄ μ μν ν¬κΈ°μ λ©λͺ¨λ¦¬λ₯Ό λμ μΌλ‘ ν λΉνκ³ , κ·Έ μ£Όμλ₯Ό ptr λ³μμ μ μ₯νμμ΅λλ€.
ν λΉλ λ©λͺ¨λ¦¬λ ν΄λΉ ν¬μΈν° λ³μλ₯Ό ν΅ν΄ μ κ·Όν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κ°μ ν λΉνκ±°λ λ©λͺ¨λ¦¬μ μ κ·Όν μ μμ΅λλ€.
*ptr = 10; // λ©λͺ¨λ¦¬μ 10μ ν λΉ
cout << *ptr; // λ©λͺ¨λ¦¬μ κ°μ μΆλ ₯ (μΆλ ₯ κ²°κ³Ό: 10)
λμ μΌλ‘ ν λΉν λ©λͺ¨λ¦¬λ λ μ΄μ μ¬μ©νμ§ μμ λ ν΄μ ν΄μ£Όμ΄μΌ ν©λλ€. ν΄μ λ 'delete' μ°μ°μλ₯Ό ν΅ν΄ μ΄λ£¨μ΄μ§λλ€.
delete λ³μ_μ΄λ¦;
μμ μμ μμλ λ€μκ³Ό κ°μ΄ μμ±λ©λλ€:
delete ptr; // λ©λͺ¨λ¦¬ ν΄μ
'malloc' ν¨μμ λ¬λ¦¬ 'new' μ°μ°μλ μλ£νμ ν¬κΈ°λ₯Ό κ³ λ €νμ¬ λ©λͺ¨λ¦¬λ₯Ό ν λΉνλ―λ‘, ν λΉλ λ©λͺ¨λ¦¬μ λν νλ³ν μμ μ λ°λ‘ μνν νμκ° μμ΅λλ€. λν, 'new' μ°μ°μλ₯Ό μ΄μ©ν λμ ν λΉμ μλμΌλ‘ ν λΉλ λ©λͺ¨λ¦¬μ μμ±μ(constructor)λ₯Ό νΈμΆνκ³ , ν΄μ μ μλ©Έμ(destructor)λ₯Ό νΈμΆνλ―λ‘ κ°μ²΄ μ§ν₯μ μΈ νλ‘κ·Έλλ°μμ μ μ©νκ² μ¬μ©λ©λλ€.
3. λμ ν λΉλ λ©λͺ¨λ¦¬μ μ¬μ©κ³Ό ν΄μ
λμ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬λ 'new' μ°μ°μλ₯Ό ν΅ν΄ μ»μ μ μμΌλ©°, νμν λ§νΌμ 곡κ°μ ν λΉ λ°μ μ μμ΅λλ€. μ¬κΈ°μλ λμ ν λΉλ λ©λͺ¨λ¦¬μ μ¬μ©κ³Ό ν΄μ μ λν΄ μμΈν μμλ³΄κ² μ΅λλ€.
λ©λͺ¨λ¦¬ μ¬μ©νκΈ°
λμ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬λ ν¬μΈν° λ³μλ₯Ό μ΄μ©νμ¬ μ κ·Όν μ μμ΅λλ€. ν¬μΈν° λ³μλ₯Ό ν΅ν΄ ν΄λΉ λ©λͺ¨λ¦¬ μ£Όμμ κ°μ ν λΉνκ±°λ κ°μ μ½μ μ μμ΅λλ€.
int* ptr = new int; // λμ μΌλ‘ μ μν λ©λͺ¨λ¦¬ ν λΉ
*ptr = 10; // λ©λͺ¨λ¦¬μ 10 ν λΉ
cout << *ptr; // λ©λͺ¨λ¦¬ κ° μΆλ ₯ (μΆλ ₯ κ²°κ³Ό: 10)
μμ μμ μμλ 'new int'λ₯Ό ν΅ν΄ μ μν ν¬κΈ°μ λ©λͺ¨λ¦¬λ₯Ό λμ μΌλ‘ ν λΉνκ³ , κ·Έ μ£Όμλ₯Ό ptr λ³μμ μ μ₯νμ΅λλ€. κ·Έλ¦¬κ³ ν¬μΈν° '*'λ₯Ό μ΄μ©νμ¬ λ©λͺ¨λ¦¬μ κ° 10μ ν λΉνκ³ , μ΄λ₯Ό μΆλ ₯νμμ΅λλ€.
λμ μΌλ‘ ν λΉν λ©λͺ¨λ¦¬λ λ³μκ° λΈλ‘(scope)μ λ²μ΄λλλΌλ μ μ§λ©λλ€. μ¦, ν¨μκ° μ’ λ£λλλΌλ ν λΉλ λ©λͺ¨λ¦¬λ κ·Έλλ‘ μ μ§λ©λλ€. μ΄λ μ μ λ³μμλ λ¬λ¦¬ λμ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬μ μλͺ μ£ΌκΈ°κ° ν¨μ λ΄μμλ§ μ ν¨νλ€λ κ²μ μλ―Έν©λλ€.
λ©λͺ¨λ¦¬ ν΄μ νκΈ°
λμ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬λ μ¬μ©μ΄ μλ£λλ©΄ ν΄μ λμ΄μΌ ν©λλ€. ν΄μ λμ§ μμ λμ λ©λͺ¨λ¦¬λ λ©λͺ¨λ¦¬ λμ(memory leak)λ₯Ό λ°μμν¬ μ μμΌλ©°, μ΄λ μμ€ν μμμ κ³ κ°μν¬ μ μμ΅λλ€.
λ©λͺ¨λ¦¬μ ν΄μ λ 'delete' μ°μ°μλ₯Ό ν΅ν΄ μ΄λ£¨μ΄μ§λλ€.
delete ptr; // λ©λͺ¨λ¦¬ ν΄μ
μμ μμ μμλ 'ptr' λ³μμ ν λΉλ λ©λͺ¨λ¦¬λ₯Ό 'delete' μ°μ°μλ₯Ό μ¬μ©νμ¬ ν΄μ νμμ΅λλ€.
λ©λͺ¨λ¦¬κ° ν΄μ λ νμλ ν΄λΉ λ©λͺ¨λ¦¬λ₯Ό λ€μ μ κ·Όν΄μλ μλ©λλ€. ν΄μ λ λ©λͺ¨λ¦¬μ μ κ·Όνλ©΄ μκΈ°μΉ μμ λμμ΄ λ°μν μ μμ΅λλ€. λ°λΌμ λ©λͺ¨λ¦¬λ₯Ό ν΄μ ν νμλ ν΄λΉ ν¬μΈν° λ³μλ₯Ό μ κ΄λ¦¬ν΄μΌ ν©λλ€. μΌλ°μ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬λ₯Ό ν΄μ ν νμλ ν¬μΈν° λ³μλ₯Ό 'nullptr'λ‘ μ΄κΈ°ννλ κ²μ΄ μ’μ΅λλ€.
delete ptr; // λ©λͺ¨λ¦¬ ν΄μ
ptr = nullptr; // ν¬μΈν° μ΄κΈ°ν
λ©λͺ¨λ¦¬ ν΄μ λ ν΄λΉ λ©λͺ¨λ¦¬λ₯Ό λμ μΌλ‘ ν λΉν λ€μ 'delete' μ°μ°μλ₯Ό μ¬μ©νμ¬ ν΄μ ν΄μΌ ν©λλ€. μ μ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬λ μ€νμ λ³μλ 'delete' μ°μ°μλ‘ ν΄μ νλ©΄ μλ©λλ€. λν, λμΌν λ©λͺ¨λ¦¬λ₯Ό λ λ² μ΄μ ν΄μ νκ±°λ λ€λ₯Έ ν¬μΈν°λ‘ ν΄μ νλ κ²λ λ¬Έμ λ₯Ό λ°μμν¬ μ μμΌλ―λ‘ μ£Όμν΄μΌ ν©λλ€.
4. λ©λͺ¨λ¦¬ λμ ν λΉμ νμ© μμμ μ₯λ¨μ
λ©λͺ¨λ¦¬ λμ ν λΉμ νμν λ§νΌμ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉνμ¬ νλ‘κ·Έλ¨μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μκ² ν΄μ€λλ€. μ΄λ²μλ λ©λͺ¨λ¦¬ λμ ν λΉμ νμ© μμμ μ₯λ¨μ μ λν΄ μμλ³΄κ² μ΅λλ€.
νμ© μμ
λ©λͺ¨λ¦¬ λμ ν λΉμ νλ‘κ·Έλ¨μμ κ°λ³μ μΈ ν¬κΈ°μ λ°μ΄ν°λ₯Ό λ€λ£° λ νΉν μ μ©ν©λλ€. μλ₯Ό λ€μ΄, μ¬μ©μλ‘λΆν° μ λ ₯ λ°μ μ μμ κ°μμ λ°λΌ λ°°μ΄μ λμ μΌλ‘ ν λΉνμ¬ μ²λ¦¬νλ κ²½μ°λ₯Ό μ΄ν΄λ΄ μλ€.
int num;
cout << "λ°°μ΄μ ν¬κΈ°λ₯Ό μ
λ ₯νμΈμ: ";
cin >> num;
int* arr = new int[num]; // μ¬μ©μλ‘λΆν° μ
λ ₯ λ°μ ν¬κΈ°λ‘ λ°°μ΄μ λμ ν λΉ
for (int i = 0; i < num; i++) {
cout << "μ μλ₯Ό μ
λ ₯νμΈμ: ";
cin >> arr[i];
}
for (int i = 0; i < num; i++) {
cout << arr[i] << " ";
}
delete[] arr; // λ°°μ΄ λ©λͺ¨λ¦¬ ν΄μ
μμ μμ μμλ μ¬μ©μλ‘λΆν° λ°°μ΄μ ν¬κΈ°λ₯Ό μ λ ₯λ°κ³ , κ·Έ ν¬κΈ°λ‘ μ μν λ°°μ΄μ λμ μΌλ‘ ν λΉν©λλ€. μ¬μ©μλ μ λ ₯ν ν¬κΈ°λ§νΌ μ μλ₯Ό μ λ ₯νκ³ , μ λ ₯ν κ°λ€μ μΆλ ₯ν©λλ€. λ§μ§λ§μΌλ‘ λ°°μ΄ λ©λͺ¨λ¦¬λ₯Ό ν΄μ ν©λλ€.
λ©λͺ¨λ¦¬ λμ ν λΉμ λ°°μ΄ λΏλ§ μλλΌ κ°μ²΄ μ§ν₯μ μΈ νλ‘κ·Έλλ°μμλ μ μ©νκ² μ¬μ©λ©λλ€. ν΄λμ€μ λμ μμ±κ³Ό ν΄μ λ κ°μ²΄μ μλͺ μ λμ μΌλ‘ μ μ΄ν μ μκ² ν΄μ£Όλ©°, λ³΅μ¬ μμ±μμ λμ μ°μ°μλ₯Ό μ μ ν μ μν¨μΌλ‘μ¨ μμ 볡μ¬(shallow copy)μ λ©λͺ¨λ¦¬ λμλ₯Ό νΌν μ μμ΅λλ€.
μ₯λ¨μ
λ©λͺ¨λ¦¬ λμ ν λΉμ μ₯μ μ λ€μκ³Ό κ°μ΅λλ€:
- λ©λͺ¨λ¦¬μ μ μ°ν μ¬μ©: λμ ν λΉμ ν΅ν΄ νμν λ§νΌμ λ©λͺ¨λ¦¬λ₯Ό λμ μΌλ‘ ν λΉνμ¬ λ©λͺ¨λ¦¬ 곡κ°μ ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
- κ°λ³μ μΈ λ°μ΄ν° ν¬κΈ° μ²λ¦¬: λ°μ΄ν°μ ν¬κΈ°κ° μ€ν μκ°μ κ²°μ λλ κ²½μ°, λμ ν λΉμ ν΅ν΄ νμν ν¬κΈ°μ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μ μμ΅λλ€.
- κ°μ²΄ μ§ν₯μ νλ‘κ·Έλλ°μμμ νμ©: λμ ν λΉμ κ°μ²΄μ μμ±κ³Ό μλ©Έμ λμ μΌλ‘ μ μ΄ν μ μμ΄ κ°μ²΄ μ§ν₯μ μΈ νλ‘κ·Έλλ°μ μ ν©ν©λλ€.
νμ§λ§ λ©λͺ¨λ¦¬ λμ ν λΉμ λ€μκ³Ό κ°μ λ¨μ λ κ°κ³ μμ΅λλ€:
- λ©λͺ¨λ¦¬ λμ κ°λ₯μ±: λ©λͺ¨λ¦¬ ν΄μ λ₯Ό μκ±°λ, μ¬μ©νμ§ μλλ°λ κ³μν΄μ ν λΉλ λ©λͺ¨λ¦¬λ₯Ό μ μ§νλ κ²½μ° λ©λͺ¨λ¦¬ λμκ° λ°μν μ μμ΅λλ€.
- μ€λ²ν€λ: λμ ν λΉμ λ©λͺ¨λ¦¬ κ΄λ¦¬λ₯Ό μν΄ μΆκ°μ μΈ μ€λ²ν€λκ° λ°μνλ―λ‘, μ μ ν λΉμ λΉν΄ μ½κ°μ μ±λ₯ μ νκ° μμ μ μμ΅λλ€.
- 볡μ‘μ±: ν¬μΈν°μ μ¬μ©μ±μ λ¨μ΄λ¨λ¦΄ μ μμΌλ©°, λ©λͺ¨λ¦¬ ν΄μ λ₯Ό μλ κ²½μ° λ¬Έμ λ₯Ό μΌκΈ°ν μ μμ΅λλ€.
λ©λͺ¨λ¦¬ λμ ν λΉμ νμν κ²½μ°μ μ μ ν νμ©νμ¬ λ©λͺ¨λ¦¬ κ΄λ¦¬λ₯Ό ν¨κ³Όμ μΌλ‘ μνν μ μμ΅λλ€. κ·Έλ¬λ ν λΉλ λ©λͺ¨λ¦¬μ ν΄μ λ₯Ό μκ±°λ, μ μ ν μμΈ μ²λ¦¬λ₯Ό νμ§ μμΌλ©΄ λ©λͺ¨λ¦¬ λμλ λ€λ₯Έ λ¬Έμ κ° λ°μν μ μμΌλ―λ‘ μ£Όμκ° νμν©λλ€.
5. λμ ν λΉ μ λ°μν μ μλ λ¬Έμ μ μμΈ μ²λ¦¬ λ°©λ²
λμ ν λΉμ λ©λͺ¨λ¦¬λ₯Ό ν¨μ¨μ μΌλ‘ μ¬μ©νκΈ° μν κ°λ ₯ν κΈ°λ₯μ΄μ§λ§, μλͺ» μ¬μ©νκ±°λ μ μ ν μμΈ μ²λ¦¬λ₯Ό νμ§ μμΌλ©΄ λ€μν λ¬Έμ λ₯Ό λ°μμν¬ μ μμ΅λλ€. μ΄λ²μλ λμ ν λΉ μ λ°μν μ μλ λ¬Έμ μ μμΈ μ²λ¦¬ λ°©λ²μ λν΄ μμλ³΄κ² μ΅λλ€.
λ¬Έμ μ
λ©λͺ¨λ¦¬ λμ (Memory Leak): ν λΉ λ°μ λ©λͺ¨λ¦¬λ₯Ό ν΄μ νμ§ μκ³ μμ΄λ²λ¦¬λ κ²½μ°, ν΄λΉ λ©λͺ¨λ¦¬λ₯Ό μ¬μ©ν μ μκ² λλ©΄μ λ©λͺ¨λ¦¬ λμκ° λ°μν©λλ€. μ΄λ μμ€ν μμ κ³ κ°λ‘ μ΄μ΄μ§ μ μμ΅λλ€.
λκΈλ§ ν¬μΈν° (Dangling Pointer): λ©λͺ¨λ¦¬λ₯Ό ν΄μ ν μ΄νμλ ν΄λΉ λ©λͺ¨λ¦¬λ₯Ό μ°Έμ‘°ν μ μκ² λλ©΄, λκΈλ§ ν¬μΈν°κ° λ°μν©λλ€. λκΈλ§ ν¬μΈν°λ‘ μΈν΄ μμΈ‘ν μ μλ λμμ΄ λ°μν μ μμ΅λλ€.
μλͺ»λ λ©λͺ¨λ¦¬ μ°Έμ‘° (Invalid Memory Access): ν λΉλ λ©λͺ¨λ¦¬ μμμ λ²μ΄λκ±°λ μ΄λ―Έ ν΄μ λ λ©λͺ¨λ¦¬λ₯Ό μ°Έμ‘°νλ κ²½μ°, μλͺ»λ λ©λͺ¨λ¦¬ μ°Έμ‘°κ° λ°μν©λλ€. μ΄λ νλ‘κ·Έλ¨μ λΉμ μμ μΈ λμμ μΌκΈ°ν μ μμ΅λλ€.
μμΈ μ²λ¦¬ λ°©λ²
- λ©λͺ¨λ¦¬ ν΄μ (Memory Deallocation): λμ ν λΉν λ©λͺ¨λ¦¬λ μ¬μ©μ΄ λλλ©΄ ν΄μ ν΄μ£Όμ΄μΌ ν©λλ€. 'delete' μ°μ°μλ₯Ό μ¬μ©νμ¬ ν΄λΉ λ©λͺ¨λ¦¬λ₯Ό ν΄μ νκ³ , ν¬μΈν°λ₯Ό 'nullptr'λ‘ μ΄κΈ°ννλ©΄ λ©λͺ¨λ¦¬ λμλ₯Ό λ°©μ§ν μ μμ΅λλ€.
int* ptr = new int;
// ptrμ μ¬μ©νλ μ½λ...
delete ptr;
ptr = nullptr;
- ν λΉ μ€λ₯ μ²λ¦¬: λμ ν λΉ μ λ©λͺ¨λ¦¬ ν λΉμ΄ μ€ν¨ν μ μμΌλ―λ‘, μ΄μ λν μμΈ μ²λ¦¬λ₯Ό ν΄μ£Όμ΄μΌ ν©λλ€. 'new' μ°μ°μλ₯Ό μ¬μ©νμ¬ λ©λͺ¨λ¦¬λ₯Ό ν λΉν λ 'bad_alloc' μμΈκ° λ°μν μ μμΌλ―λ‘, μ΄λ₯Ό μ μ ν μ²λ¦¬ν΄μΌ ν©λλ€.
try {
int* ptr = new int;
// ptrμ μ¬μ©νλ μ½λ...
delete ptr;
ptr = nullptr;
} catch (bad_alloc& e) {
cout << "λ©λͺ¨λ¦¬ ν λΉ μ€λ₯: " << e.what() << endl;
// μ€λ₯ μ²λ¦¬ μ½λ...
}
- μ¬λ°λ₯Έ λ©λͺ¨λ¦¬ μ°Έμ‘°: λμ μΌλ‘ ν λΉν λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νλ λμμλ ν΄λΉ λ©λͺ¨λ¦¬λ₯Ό μ μμ μΌλ‘ μ°Έμ‘°ν΄μΌ ν©λλ€. λ©λͺ¨λ¦¬λ₯Ό ν΄μ ν λ€μλ ν΄λΉ λ©λͺ¨λ¦¬λ₯Ό λ μ΄μ μ°Έμ‘°νμ§ μμμΌ ν©λλ€. λν, ν¬μΈν° λ³μλ₯Ό λ€λ₯Έ λ³μμ ν λΉνλ λ±μ λμμ ν΅ν΄ λκΈλ§ ν¬μΈν° λ¬Έμ λ₯Ό λ°©μ§ν΄μΌ ν©λλ€.
int* ptr = new int;
// ptrμ μ¬μ©νλ μ½λ...
int* newPtr = ptr; // λμ ν λΉλ λ©λͺ¨λ¦¬λ₯Ό λ€λ₯Έ ν¬μΈν° λ³μμ ν λΉ
delete ptr; // λ©λͺ¨λ¦¬ ν΄μ
ptr = nullptr;
// newPtrμ μ¬μ©νλ μ½λ...
μ¬λ°λ₯Έ μμΈ μ²λ¦¬μ μ μ ν λ©λͺ¨λ¦¬ κ΄λ¦¬λ λμ ν λΉμ μμ νκ² μ¬μ©νκΈ° μν΄ μ€μν μμμ λλ€. μ΄λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ λμ, λκΈλ§ ν¬μΈν°, μλͺ»λ λ©λͺ¨λ¦¬ μ°Έμ‘°μ κ°μ λ¬Έμ λ₯Ό λ°©μ§ν μ μμ΅λλ€.
λκΈ