“corruption in the heap” vector内存释放错误
2013-12-19 16:30
447 查看
为系统加了一个resize图像的小模块,将图像的长边控制在300像素以下,从而通过减小数据包大小来提升网络传送速度。使用的是opencv 2.3.1的库,代码如下:
可以为vector<uchar> buff动态分配内存,但在if语句结束时释放buff会出现corruption in the heap的问题。
若在buff初始化时分配足够的内存,则不会出现此类问题,如下所示:
目前还想不出是什么原因,坐等高人指点。
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
目前还想不出是什么原因,坐等高人指点。
相关文章推荐
- bootchart工具在Android系统开机测量中的应用
- cocos2d-x 为CCEditBox添加纯数字0到9的键盘输入类型并讲解其使用
- Session持久化的实例分析(转)
- 《游戏脚本的设计与开发》-(RPG部分)3.1 RPG地图到底怎么做?
- Ubuntu安装nodeJS
- 解决windows server 2003不认U盘或移动硬盘
- js中模拟多个字母的split
- 『Golang』MongoDB在Golang中的使用(mgo包)
- linux软raid的基本设置
- SSL Pining Mode 设置iOS SSL 连接安全
- [SharePoint2010开发入门经典]9创建更好的用户体验----silverlight
- Swing中支持自动换行的WrapLayout
- MQTT的学习研究(十七)Mosquitto简要教程(安装&使用)
- Fixed SGA
- 监控cacti中的RRDtool用法详解
- Erlang入门(三)
- java-jndi(tomcat-oracle)
- HiveQL 常用操作
- Linux中find常见用法示例
- [SharePoint2010开发入门经典]8集成业务线数据,使用业务联通服务