[완료]배열포인터를 포인터로 표현하려 합니다.
글쓴이: dltkddyd / 작성시간: 목, 2012/02/09 - 9:13오후
#include
using namespace std;
int main() {
int **a=new int*[2];//int* a[2];
*a=new int;
a[0]=new int(10);
a[1]=new int(20);
cout<<*(*(a+0))<<endl;
cout<<*(*(a+1))<<endl;
delete a[0];
delete a[1];
return 0;
}
위의 소스에서 int* a[2]가 int **a=new int*[2]와 같은 구조인가요. 그러니까 전자가 int형을 가리키는 요소 두 개의 포인터 배열을 만드는 것처럼 후자는 그런 것인지 궁금합니다. 그리고 위 소스의 이중 포인터를 해제 할 때 delete a[0], delete a[1]이라 하는 것이 맞나요? 이제 초보 딱지 떼야 하는데, 참 C++은 어렵습니다.
Forums:
*a 가 a[0]과 같아서 *a = new int;
*a 가 a[0]과 같아서 *a = new int; 문장에서 할당된 메모리가 누수가 일어나게 됩니다.
포인터가 헷갈릴 때에는 typedef int* pint; typedef pint* ppint; 와 같이 typedef문을 이용하면 좀 더 이해하기가 쉽습니다.
그렇다면,
아, 그렇다면, 해결방법으로 *a=new int 를 빼는 것도 하나의 방법이 되겠네요. 그러면 메모리 누수가 없어지죠?
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
댓글 달기