您的位置:首页 > 其它

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

2013-12-19 16:30 447 查看
为系统加了一个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);
else
imgSize = 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-100
vector<uchar> buff;//buffer for coding
cv::imencode(".jpg",imageMatDst,buff,param);
}

cv::imencode()


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

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

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




目前还想不出是什么原因,坐等高人指点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: