VC++ 数组的问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 14:47:17
我用如下程序提取一个三维高光谱图像文件
double *Source=new double[144*144*200];
double load::loadspe(void)
{
FILE *Stream;
int NumberRead;
int nRow = 144;
int nColumn = 144;
int nBand = 200;
double *Source1=new double[nRow*nColumn*nBand];
Source=Source1;//数据在此
// 读入数据
if( ( Stream = fopen( "d:/test", "rb" ) ) == NULL )
{ AfxMessageBox(_T("The file 'data' was not opened"));exit(0);
}
else
{
NumberRead = fread( Source1 ,sizeof(short) ,nRow*nColumn*nBand , Stream );
}
fclose(Stream);
return *Source;
}
然后我在其他函数里调用这个类,想提取出(87,53)这点对应的第三维数值
double *sor;
double val[200]
load lo;
*sor=lo.loadspe();
for(j=0;j<200;j++)
{
val[j]=sor[80+57*144+j*144*200];
}
生成没错
调试时却报错
test3.exe 中的 0x7c9577a3 处未处理的异常: 0xC0000005: 写入位置 0x00030ffc 时发生访问冲突
请问应该怎么办?

错的很啊,double load::loadspe(void)
只返回了一个值,为什么不传地址
double *sor; *sor=lo.loadspe();
没有分配,直接等于 是死的原因,
for(j=0;j<200;j++)
{
val[j]=sor[80+57*144+j*144*200];
}
200*144*200 明显越界了
NumberRead = fread( Source1 ,sizeof(short) ,nRow*nColumn*nBand , Stream );

不是double型的吗,怎么读short的大小