생성자

A a2;

int main() {
    A a1;
    cout << a1.getP() << endl; // 32767 ( 초기화되지 않은 쓰레기 값 )
    cout << a2.getP() << endl; // 0 ( 초기화 된 값 ) 
    return 0;

전역변수는 생성자 만들면 초기화 해서 나오고,
지역변수는 생성자 만들면 초기화 안 되어서 나옴.

#include <iostream>
using namespace std;

class Kvector{
    int *m;
public:
    Kvector(int sz = 0){
        cout << this << " : Kvector(int) called \n";
        if (sz > 0) m = new int[sz];
        else m = NULL;

    }
    ~Kvector(){
        cout << this << " : ~Kvector() called \n";
        delete[]    m;  // 여기가 메모리 누수 방지하는 부분! 
    }
    int *getM() {
        return m;
    }
};

Kvector v2(2);
int main() {
    Kvector v1;
    cout << v1.getM() << endl;
    cout << v2.getM() << endl;
    return 0;
}

결과

0x407030 : Kvector(int) called // v2가 먼저 할당
0x61fe08 : Kvector(int) called // v1 할당
0
0x10917a0 ( 2개의 배열만큼 할당해서 그 주소 출력 )
0x61fe08 : ~Kvector() called // v1 반납
0x407030 : ~Kvector() called // v2 반납

'TIL > [C++ 프로그래밍} TIL' 카테고리의 다른 글

TIL 22.06.08 (시험에 나올만한..?)  (0) 2022.06.09
TIL (22.06.07) ( * , & 관련 )  (0) 2022.06.08
TIL (22.05.30)  (0) 2022.05.30
TIL (22.05.25)  (0) 2022.05.25
TIL (22.05.23)  (0) 2022.05.23