gpt4 book ai didi

c - For 循环中的段错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:12 24 4
gpt4 key购买 nike

我有以下代码在执行几次后不断出现段错误。

//pasting second image
for(n32i=0;n32i<(SrcImageHeight2);n32i++)
{
//printf("\n%di",i);
for(n32j=0;n32j<(SrcImageWidth2);n32j++)
{
int x=n32j;
int y=n32i;

CvMat *tempMatrix1 = cvCreateMat(3,1,CV_32FC1);
printf("\n Here , %d , %d , %d , %d ,%d ,%d , x = %d , y = %d" , n32k , n32j , n32i , SrcImageChannels2 , SrcImageWidth2 , SrcImageHeight2 , x, y);
CV_MAT_ELEM(*tempMatrix1, float,0,0) =x;
printf("\n There , %d , %d , %d , %d ,%d ,%d" , n32k , n32j , n32i , SrcImageChannels2 , SrcImageWidth2 , SrcImageHeight2);
CV_MAT_ELEM(*tempMatrix1, float,1,0) =y;
CV_MAT_ELEM(*tempMatrix1, float,2,0) =1;
cvMatMul(matrixH,tempMatrix1,tempMatrix1);
x=*((float *)CV_MAT_ELEM_PTR(*tempMatrix1,0,0))/ *((float *)CV_MAT_ELEM_PTR(*tempMatrix1,2,0));
y=*((float *)CV_MAT_ELEM_PTR(*tempMatrix1,1,0))/ *((float *)CV_MAT_ELEM_PTR(*tempMatrix1,2,0));

for(n32k=0;n32k<(SrcImageChannels2);n32k++)
{
if(DstImageData[(y+h)*DstImageStep+(x+w)*DstImageChannels+n32k] ==0)
{
DstImageData[(y+h)*DstImageStep+(x+w)*DstImageChannels+n32k]=SrcImageData2[n32i*SrcImageStep2+n32j*SrcImageChannels2+n32k];
}
}
}
}

错误在 CV_MAT_ELEM(*tempMatrix1, float,0,0) =x; 行,我不明白为什么会这样,因为它只是一个赋值,而且工作正常用于更早的执行(即错误之前的执行)。

最佳答案

听起来好像 cvCreateMat() 进行了动态内存分配,但您未能:

  1. 检查是否成功
  2. 完成后释放它。

这两个都很糟糕,加在一起就很糟糕。

关于c - For 循环中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12423444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com