본문 바로가기

Google AdSense

C, C++

2차원 메모리 동적할당 (C++)

by 박__주홍 2020. 8. 27.

new, delete를 사용해서 동적할당을 하고 메모리를 해체해보았다. 다시금 포인터배열의 구조를 익힐 수 있었다.

 

1. new (int*[3]); 과 new int * [3]; , new int [3]과 new (int[3]);의 차이

 

2.*(*(p+2) + 3)의 구조

 

3. 왜 delete, 메모리해제할때 동적할당된 일반변수 즉 *(*(p+0) + 0)은 해제해주지 않고 포인터변수만 메모리해제 해주는가? 

ex ) for (i = 0; i < 2; i++) delete[] *(pp + i);
     delete pp;

 

 

#include <iostream>
using namespace std;

int main()
{
int** pp;
int i,sub_i;

pp = new int* [2];
for(i = 0;i<2;i++) *(pp + i) = new int[3];

for (i = 0; i < 2; i++) {
for (sub_i = 0; sub_i < 3; sub_i++) {
*(*(pp + i) + sub_i) = 1;
}
}

for (i = 0; i < 2; i++) {
for (sub_i = 0; sub_i < 3; sub_i++) {
cout << "*(*(pp + " << i << ") + "<<sub_i<<")의 주소 : " << hex << uppercase <<
&(*(*(pp + i) + sub_i)) << endl;
cout << "*(*(pp + " << i<<") + " << sub_i << ")의 값 : " << dec << *(*(pp + i) + sub_i)
<< endl;
}
}

for (i = 0; i < 2; i++) delete[] *(pp + i);
delete pp;

return 0;

}

'C, C++' 카테고리의 다른 글

다형성(Polymorphism)  (0) 2020.08.25
오버라이딩(Over riding)  (0) 2020.08.24
레이달리오 올웨더포트폴리오(2)  (0) 2020.08.23
레이달리오 올웨더포트폴리오(1)  (0) 2020.08.23
도서대여프로그램 with C  (0) 2020.08.21

댓글