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

}

Tag |

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다