小程序遇见 !Access violation!!!! 请大家帮帮
小程序遇见 !Access violation!!!! 请大家帮帮看下
#include "stdio.h "
main()
{
// 循环控制变量
int y;
int x;
int i;
// 一维高斯数据滤波器
double dDotMul ;
// 高斯滤波系数的总和
double dWeightSum ;
// 中间变量
double * pdTmp ;
// 分配内存
pdTmp = (double *)malloc(252*544) ;
//////////////////////////在这个嵌套循环出现的//////////////
// x方向进行滤波
for(y=0; y <252; y++)
{
for(x=0; x <544; x++)
{
dDotMul = 0;
dWeightSum = 0;
for(i=(-4); i <=4; i++)
{
// 判断是否在图象内部
if( (i+x) > = 0 && (i+x) <544 )
{
dDotMul += 1+x;
dWeightSum += 1;
}
}
pdTmp[y*544 + x] = dDotMul/dWeightSum ;
//////////////////////////在这个嵌套循环出现的/////////////////
}
}
}
[解决办法]
我没仔细看,但我觉得下标益处的可能性比较大,在调试器里追踪一下这句语句吧:
pdTmp[y*544 + x] = dDotMul/dWeightSum ;
主要看看y * 544 + x是否在一个合理范围内。
[解决办法]
觉得这里指针不能当做数组来用//
lz可以直接用数组试一试。。
[解决办法]
pdTmp[y*544 + x] = dDotMul/dWeightSum ;
//////////////////////////在这个嵌套循环出现的/////////////////
pdTmp分配的内存不足,应该这样分配
pdTmp = (double *)malloc(252*544*sizeof( double )) ;
[解决办法]
pdTmp = (double *)malloc(252*544*sizeof( double )) ;
ok, 应该这个问题
double不是一个字节