#include <iostream>
using namespace std;

class Simple
{
public:
    int m_id;
    
    Simple(const int& id_in)
        : m_id(id_in)
    {
    	cout << "Constructor" << " " << m_id << "\n";         
    }
    
    ~Simple()
    {
        cout << "Desctructor" << " " << id << "\n";
    }
    
}

int main()
{
    Simple s1(0);
    Simple s2(1);
    
    // Constructor 0
    //Constructor 1
    // Destructor 1
    // Destructor 0
    
    return 0;
}
class IntArray
{
private:
    int *m_arr = nullptr;
    int m_length = 0;
    
public:
    IntArray(const int length_in)
    {
        m_length = length_in;
        m_arr = new int[m_length];
    }
    
    ~IntArray()
    {
        if (m_arr !=nullptr) delete[] m_arr; // 소멸하면서 delete되도록 하면 memory 누수가 생기지 않음
    }
    
    int getLength(){ return m_length;}
    
}

int main()
{
    while (true)
    {
        IntArray my_int_arr(10000); // memory leak
        
    }
    return 0;
}