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 |
댓글