Eclipse处理图像,内存分配不够的问题

问题现象:在使用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);
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值