问题现象:在使用Eclipse+OpenCV图像处理的过程中,一运行debug程序就死,说明程序在编译期间就已经出问题了(虽然没有出现编译错误),现象如下:
No source available for "_alloca() at 0x418742"
原因:函数里面不适合定义很大的临时数组变量!
解决的办法:将数组变量改为二维指针,动态分配数组,减小堆栈内存的大小
源程序:
/*以下代码读取mat文件,存储为int*数组,并将int*数组转变为图像IplImage,显示图片*/
mat_t* mat;
mat=Mat_Open("SOP_v6.mat",MAT_ACC_RDWR);
if(mat)
{
matvar_t* matvar;
int start[2],stride[2],edge[2], err,dims[2];
matvar = Mat_VarReadInfo(mat,"Img");
start[0]=0;start[1]=0;//数组起始下标;第一个数下标为0
stride[0]=1;stride[2]=1;//读数组是跨步步距,参照Matlab中的格式——start:stride:edge
edge[0]=1920-1;edge[1]=2016-1;//数组终止下标
err = 0;
int Img[1920][2016];
Mat_VarReadData(mat,matvar,Img,start,stride,edge);
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
printf("%d ",Img[i][j]);
}
printf("/n");
}
fflush(stdout);
Mat_VarFree(matvar);
Mat_Close(mat);
}