|
unsigned char **warpedImg2;
warpedImg2 = (unsigned char**)malloc(imageHeight*sizeof(unsigned char *));
조금 알아보기가 어렵지요?
unsigned char * 를 하나의 변수형으로 생각해 보세요.. 예를 들면 int 처럼요..
그럼 위의 소스는
int *warpedImg2;
warpedImg2 = (int *)malloc(imageHeight * sizeof(int)); 라는 표현이 되지요. 조금 알기쉽게 보이지요?
여기서 malloc함수는 리턴값이 void * 형이기 때문에 꼭 앞에 형변환을 지정해 줘야합니다.
여기서 하고자하는 것은 imageHeight개수만큼의 포인터 변수를 가질수 있는 메모리 공간을 할당하고 싶다는 거지요.
예를 들어 말하자면 모니터를 생각해 볼까요?
모니터는 좌측부터 우측끝까지 색상이 있는 점들이 가로로 한줄한줄 모여있는거라 생각할 수 있겠지요
한줄한줄의 모니터 위에서 아래까지 모여있는 거죠..
자 여기서 위의 소스내용에 빗대어 생각해 보시면
모니터의 위에서 아래까지는 imagHeight(만약 400 이라면 400라인이 되겠지요)이 되고,
warpedImg2는 그 한줄 한줄의 시작주소(포인터)를 가지는 배열형태라고 생각하시면 됩니다.
그러니까 젤 앞열의 시작주소만 저장하고자 있는거죠 400라인(행) 만큼이요..
이해에 도움이 되시길 바라는 마음에서 추가적으로 적어보았습니다.
음 님이 쓰신 글 :
: 제가 요즘 C공부중인데 모르는 표현이 나와서 염치 불구하고 질문 올려요..
: unsigned char **warpedImg2;
: warpedImg=(unsigned char**)malloc(imageHeight*sizeof(unsigned char *));
:
: 이렇게 선언 되어있는데.. 만약에 imageHeight가 400이라면 메모리가 얼만큼 할당되는거죠?
: 글고 저기서 unsigned char** 형으로 형변환을 했는데 저게 무슨 의미에요?
: 글고 malloc 에서 보통 malloc(할당하고자하는 바이트수) 이런 표현만 배웠는데
: sizeof(unsigned char*)만큼 할당해준다는게 무슨 의미인지??
:
: 위 소스는 이미지처리책에 나오는 한부분입니다.. 포인터 디기 어렵네요..-_-;
|