MyException - 我的异常网
当前位置:我的异常网» C++ » 栈溢出出有关问题。0xC00000FD:Stack Overflow

栈溢出出有关问题。0xC00000FD:Stack Overflow

www.MyException.Cn  网友分享于:2013-10-21  浏览:126次
栈溢出出问题。0xC00000FD:Stack Overflow
当我开始调试时,总是出现一个框显示:Unhandled exception in YUV.exe:0xC00000FD:Stack Overflow
 好像是指针问题,内存释放的问题,可是不清楚怎么改啊???这个是VC6和opencv库函数一起编译的。
#include <iostream>
#include <stdlib.h>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
using namespace std;
//void saturate_sv( IplImage* img);
int main(int argc, char** argv[]){
int key=0;
char* filename="D:/002.avi";
CvCapture* capture = cvCreateFileCapture(filename);
if(capture==NULL) {
cout<<"NO capture"<<endl;
char a=getchar();
return 1;
};  
IplImage* frame;
cvNamedWindow("PlayAVI", CV_WINDOW_AUTOSIZE);
while(1) {
frame = cvQueryFrame( capture );
if(!frame) break;
  int i=0,b=0,r=0,sum1=0, sum2=0,avg1=0,avg2=0;从这行起就出问题了,以下各行设断点都是这个问题的
 
 int Y,Cb,Cr, yy[640*480],cb1[640*480],cr1[640*480],cb2[76800],cr2[76800];  
 
  for(int y=0; y<frame->height ;y++){
 
uchar*ptr=(uchar*)(frame->imageData+y*frame->widthStep);
 
for (int x=0;x<frame->width;x++ ){
 
Y=(int)(0.299*ptr[3*x+2]+0.587*ptr[3*x+1]+0.144*ptr[3*x]); //ptr[3*x+2]得到Y分量每个像素点采集一个Y分量
 
Cb=(int)(0.564*(ptr[3*x]-Y)+128);
 
Cr=(int)(0.713*(ptr[3*x+2]-Y)+128);

  yy[i]=Y; cb1[b]=Cb; cr1[r]=Cr;

  i++; r++; b++; //ptr[3*x+2] 是R红色通道,ptr[3*x+1]是G绿色通道,ptr[3*x]是B蓝色通道。
}
}

  for (int k=0; k<76800; k++){ //k的取值范围是0~76800

for (int l=4*k; l<=4*k+3; l++){ //l的取值范围是0~640*480=307200

  sum1+=cb1[b]; sum2+=cr1[r];
}

avg1=(int)sum1/4; avg2=(int)sum2/4;
 
cb2[k]=avg1; cr2[k]=avg2;
 
  sum1=0; sum2=0;
}

  FILE *file; 

file=fopen("d:\\file.yuv","ab");
   
fwrite (yy,4,640*480,file); 
   
fwrite (cb2,4,76800,file); 
 
fwrite (cr2,4,76800,file);  

fclose (file);  
  
cvShowImage("PlayAVI", frame );

key = cvWaitKey(33);// quit when users press 'ESC'

if( key == 27 ) break;

}

cvReleaseCapture(&capture);

cvDestroyWindow("PlayAVI"); 

return 0;

}

------解决方案--------------------

------解决方案--------------------
lz可以尝试以下几种方法:
1、二分法。尝试注释掉一半的代码,运行一下看看是否有问题。重复直到找到错误所在行。
2、下标检查。在每次使用下标操作符[]之前,用assert仔细检查下标是否超出范围。
3、用一款Memory debugger。Windows下推荐BoundsChecker。
------解决方案--------------------
int Y,Cb,Cr, yy[640*480],cb1[640*480],cr1[640*480],cb2[76800],cr2[76800]; //这些占内存太大了。


int *yy=new int[640*480];

------解决方案--------------------
既然是用C++,优先考虑vector<int>。
------解决方案--------------------
探讨

int Y,Cb,Cr, yy[640*480],cb1[640*480],cr1[640*480],cb2[76800],cr2[76800]; //这些占内存太大了。


int *yy=new int[640*480];

------解决方案--------------------
探讨
引用:

int Y,Cb,Cr, yy[640*480],cb1[640*480],cr1[640*480],cb2[76800],cr2[76800]; //这些占内存太大了。


int *yy=new int[640*480];

文章评论

当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
每天工作4小时的程序员
每天工作4小时的程序员
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Java程序员必看电影
Java程序员必看电影
那些争议最大的编程观点
那些争议最大的编程观点
如何成为一名黑客
如何成为一名黑客
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员应该关注的一些事儿
程序员应该关注的一些事儿
漫画:程序员的工作
漫画:程序员的工作
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
为什么程序员都是夜猫子
为什么程序员都是夜猫子
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
旅行,写作,编程
旅行,写作,编程
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员必看的十大电影
程序员必看的十大电影
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员和编码员之间的区别
程序员和编码员之间的区别
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
编程语言是女人
编程语言是女人
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
10个调试和排错的小建议
10个调试和排错的小建议
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
我的丈夫是个程序员
我的丈夫是个程序员
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
一个程序员的时间管理
一个程序员的时间管理
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员都该阅读的书
程序员都该阅读的书
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
代码女神横空出世
代码女神横空出世
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员的鄙视链
程序员的鄙视链
中美印日四国程序员比较
中美印日四国程序员比较
鲜为人知的编程真相
鲜为人知的编程真相
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有