6교시
// 동적메모리할당
// 1. 왜동적메모리할당을사용하는가?
//    주로실행시간결정된값으로메모리를할당하기위해.
//--------------------------------------------------------------
// 배열의크기에대해서
void foo( const int c )
{
        int ar[c];        // error. 실행해봐야알수있다.(컴파일시간에결정!!)
}
int main()
{
        const int x = 10;
        int ar[x];       // ok.
        const int sz[3] = { 1, 2, 3 };
        int br[ sz[1] ]; 
        // error. 배열의크기는상수가아니라
        // 컴파일시간에크기를알아야하는것이다.
        // sz[1] => *(sz+1)
}
//--------------------------------------------------------------
void main()
{
        //C++
        int* p1 = new int;
        int* p2 = new int[10];
        delete p1;
        delete[] p2;
        int* p3 = new int(3);  // 3으로초기화
        // 2차원배열의주소는1차원배열포인터로가르키면된다.
        int(*p4)[10] = new int[10][10];              // 2차원배열형태로.
        
        int* p6 = new int;
        free(p6);              // undefined
        int* p7 = new int[10];
        delete p7;             // undefined
        int n;
        cout << "학생수를넣어주세요. >>";
        cin >> n;
        // 학생수만큼의메모리를할당하고싶다.    
        //int jumsu[n]; 
        // 배열의크기는변수가될수없다. 상수이어야한다.
        int* jumsu = (int*)malloc( sizeof(int)*n );          
}