[C++]메모리 동적 할당에 관해서 해제를 하면 자꾸 오류가 뜹니다
글쓴이: cleitia / 작성시간: 수, 2013/04/24 - 9:56오전
;코드 전문은 아래와 같습니다.
주석처리를 한 //delete [] szFileNamePlsNumber; 부분에서 메모리 해제를 할 때 에러가 뜹니다 ㅜㅜ
#include <use_opencv.h> #include <iostream> #include <fstream> #include <string.h> void main() { int nWidth = 176; int nHeight = 144; int nImgSize=nWidth*nHeight; int nSet = 19; unsigned short *pnZ = new unsigned short [nImgSize]; char *szFileNamePlsNumber = new char []; FILE *fin; CvSize cvImgSize = cvSize(nWidth, nHeight); // SR image size IplImage *cv_DistImg_16U = cvCreateImage(cvImgSize,IPL_DEPTH_16U,1); IplImage *cv_DistImg_8U = cvCreateImage(cvImgSize,IPL_DEPTH_8U,1); for(int i=0; i<nSet; i++) { sprintf(szFileNamePlsNumber, ".\\data1\\3DPCL_Z_Vec_U_%d.txt", (i+1)); fin = fopen(szFileNamePlsNumber, "r"); if(fin==0){printf("%d 의 데이터 로드 실패! \n", i+1);} else { for(int j=0; j<nImgSize; j++) { fscanf(fin, "%d", &pnZ[i]); } memcpy(cv_DistImg_16U->imageData, pnZ, cvImgSize.width*cvImgSize.height*sizeof(unsigned short)); cvConvertScale(cv_DistImg_16U, cv_DistImg_8U, 255./2000., 0); } } fclose(fin); delete [] pnZ; //delete [] szFileNamePlsNumber; cvReleaseImage(&cv_DistImg_16U); cvReleaseImage(&cv_DistImg_8U); }
Forums:
http://kldp.org/node/103011
http://kldp.org/node/103011
좋은 하루 보내세요 ;)
char *szFileNamePlsNumber =
char *szFileNamePlsNumber = new char [];
이 부분에서 할당시 에러가 나는 것으로 보입니다.
char* szFileNamePlsNumber=new char[5];
이런 식으로 메모리를 할당해보세요. 이런 식으로 할당하지 않더라도 컴파일시 오류 메시지는 뜨지 않을 수도 있지만 실행시 메모리 침범과 같은 오류가 발생할 수도 있을 겁니다.
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
댓글 달기