首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

小程序遇见 !Access violation! 请大家帮帮,该如何处理

2012-02-21 
小程序遇见 !Access violation!!!! 请大家帮帮 小程序遇见!Accessviolation!!!!请大家帮帮看下#includest

小程序遇见 !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不是一个字节

热点排行