C++Builder中超奇怪的问题,老是出现invalid floationg point operation. (0分)

  • 主题发起人 主题发起人 wtzmaxfn
  • 开始时间 开始时间
W

wtzmaxfn

Unregistered / Unconfirmed
GUEST, unregistred user!
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
double HH(int**Arr)
{
int i,j;
double *Pt[20];
double PicBuff[400];
for(i=0;i<20;i++)
Pt=PicBuff+20*i;
for(i=0;i<20;i++)
for(j=0;j<20;j++)
Pt[j]=double(Arr[j]);
return 1;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i,j;
int Buff[400];
int *Arr[20];
for(i=0;i<20;i++)
Arr=Buff+20*i;
for(i=0;i<400;i++)
Buff=100;
for(i=0;i<2;i++)
HH(Arr);
}
以上代码老是出现invalid floationg point operation.
为什么?
而将
for(i=0;i<2;i++)
HH(Arr);
改为
for(i=0;i<1;i++)
HH(Arr);
为什么就好了?
 
呵呵。你在HH函数中分配的指针double *Pt[20];
没有释放,for(i=0;i<1;i++)HH(Arr);只执行了一遍,而以前的你实际上已经分配了两遍指针Pt[20]
 
double *Pt[20];//指针数组
double PicBuff[400];//数组
全是静态的呀
for(i=0;i<20;i++)
Pt=PicBuff+20*i;
//赋值
 
不清楚你的错误,但你的函数显然不安全
对于do
uble HH(int** arr),你能够肯定 arr 的大小 ?
double *Pt[20] 定义一组do
uble 指针,但没有为这些
指针分配内存。原因是:double *v = NULL. 这个表达
你总清楚吧。
其他的不说了,代码组织得不好,很难看。
 
补充:看错!改正。
错误可能在
for(i=0;i<20;i++)
for(j=0;j<20;j++)
Pt[j]=double(Arr[j]);
有没有越界?!
 
指针pt你没建立,就使用,当然不可以,必须先建立
 
可能是除零错误.
 
轉型錯誤,因為pt沒有初始化,你直接把int的地址傳過去,寬度不夠,雖然你進行了轉型.如果你都用double或者都用int的話,估計不會錯.
瞎說說,沒測試.
 
接受答案了.
 
后退
顶部