opencv中,将展示的图像关闭后出现堆corrupted现象,求解决

opencv中,将显示的图像关闭后出现堆corrupted现象,求解决?
#include "stdafx.h"
#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
#include "highgui.h"
using namespace cv;
using namespace std;
int main(int argc, char** argv[])
{
char argv0[]={0};

cout<<"请输入你想读入的图像(包括路径)"<<endl;

cin>>argv0;
IplImage* img =cvLoadImage(argv0);
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
cvShowImage("Example1",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
return 0;
}

问题如下:opencv中,将展示的图像关闭后出现堆corrupted现象,求解决
------解决思路----------------------
新建空项目配置好后,如下代码测试通过了,
使用string代替char,用cin输入string时会自动分配足够的存储空间
char argv0[]={0};//这里只在栈上分配了一个字节的空间,当用cin输入时会破坏栈上其他位置的数据,导致错误
#include "opencv2\opencv.hpp"
#include <iostream>
#include <string>
#include "opencv\highgui.h"

using namespace cv;
using namespace std;

int main(int argc, char** argv[])
{
string argv0;

cout<<"请输入你想读入的图像(包括路径)"<<endl;
cin>>argv0;

IplImage* img =cvLoadImage(argv0.data());
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
cvShowImage("Example1",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");

return 0;
}

新版的opencv已不推荐上面这样读取图片,可以这样读取图片:
#include "opencv2\opencv.hpp"

using namespace cv;
using namespace std;

int main(int argc, char** argv[])
{
Mat img=imread("你的图片路径名");

if (img.empty())
{
cout<<"Read Image failed!"<<endl;
return EXIT_FAILURE;
}

imshow("图片1",img);
waitKey();

return 0;
}