“corruption in the heap” vector内存释放错误

来源:互联网 发布:淘宝卖家违规扣分 编辑:程序博客网 时间:2024/06/13 13:11

为系统加了一个resize图像的小模块,将图像的长边控制在300像素以下,从而通过减小数据包大小来提升网络传送速度。使用的是opencv 2.3.1的库,代码如下:

cv::Mat imageMatSrc = cv::imread(filename,1);if(imageMatSrc.size().width>300||imageMatSrc.size().height>300){cv::Size imgSize;if(imageMatSrc.size().width>=imageMatSrc.size().height)imgSize = cvSize(300,300*imageMatSrc.size().height/imageMatSrc.size().width);elseimgSize = cvSize(300*imageMatSrc.size().width/imageMatSrc.size().height,300);cv::Mat imageMatDst(imgSize,CV_8UC1);cv::resize(imageMatSrc, imageMatDst, imgSize, 0, 0, cv::INTER_LINEAR);vector<int> param = vector<int>(2);param[0]=CV_IMWRITE_JPEG_QUALITY;param[1]=95;//default(95) 0-100vector<uchar> buff;//buffer for codingcv::imencode(".jpg",imageMatDst,buff,param);}

cv::imencode()

可以为vector<uchar>  buff动态分配内存,但在if语句结束时释放buff会出现corruption in the heap的问题。

若在buff初始化时分配足够的内存,则不会出现此类问题,如下所示:

vector<uchar> buff(270000); //buffer for coding

目前还想不出是什么原因,坐等高人指点。

0 0
原创粉丝点击