求以下程序的错误解决方式 关于realloc()对二阶指针的赋值
请帮我找出下面这个程序执行错误的原因并说明如何修正使它能正确运行
拜托了
#include <STDIO.H>#include <ALLOC.H>#include <STDLIB.H>#include <IOSTREAM.H>#include <STRING.H>#define BASE_LENGTH 1#define INCREMENT_LENGTH 1#define ID_LENGTH 10#define NAME_LENGTH 10FILE *fp;class Log{public: long *In_Out; long *Debit_Credit; char **ID; //账户号 char **ACName; char **selfID; char **selfName; int Number; int count; int maxcount; Log() { Number=-1; count=-1; maxcount=BASE_LENGTH-1; In_Out=(long*)malloc(sizeof(long*)*BASE_LENGTH); Debit_Credit=(long*)malloc(sizeof(long)*BASE_LENGTH); ID=(char**)malloc(sizeof(char*)*BASE_LENGTH); ACName=(char**)malloc(sizeof(char*)*BASE_LENGTH); selfID=(char**)malloc(sizeof(char*)*BASE_LENGTH); selfName=(char**)malloc(sizeof(char*)*BASE_LENGTH); for(int i=0;i<BASE_LENGTH;i++) { ID[i]=(char*)malloc(sizeof(char)*ID_LENGTH); ACName[i]=(char*)malloc(sizeof(char)*NAME_LENGTH); selfID[i]=(char*)malloc(sizeof(char)*ID_LENGTH); selfName[i]=(char*)malloc(sizeof(char)*NAME_LENGTH); } } int Input(long in_out, long debit_credit, char *id, char *acname, char *selfid, char*selfname) { int i; In_Out[Number]=in_out; Debit_Credit[Number]=debit_credit; strcpy(ID[Number],id); strcpy(ACName[Number],acname); strcpy(selfID[Number],selfid); strcpy(selfName[Number],selfname); for(i=0;i<=Number;i++) { if((strcmp(selfID[i],selfid)==0) && (strcmp(selfName[i],selfname)!=0)) { cout<<"LOGS WRONG\n"<<endl; //报错; } } } int New(long in_out, long debit_credit, char *id, char *acname, char *selfid, char*selfname) {cout<<endl; if(count == maxcount) { In_Out = (long*)realloc(In_Out,sizeof(long)*BASE_LENGTH+INCREMENT_LENGTH); Debit_Credit = (long*)realloc(Debit_Credit,sizeof(long)*BASE_LENGTH+INCREMENT_LENGTH); ID = (char**)realloc(ID,sizeof(char*)*(BASE_LENGTH+INCREMENT_LENGTH)); ACName = (char**)realloc(ACName,sizeof(char*)*(BASE_LENGTH+INCREMENT_LENGTH)); selfID = (char**)realloc(selfID,sizeof(char*)*(BASE_LENGTH+INCREMENT_LENGTH)); selfName = (char**)realloc(selfName,sizeof(char*)*(BASE_LENGTH+INCREMENT_LENGTH)); for(int i=0;i<=INCREMENT_LENGTH;i++) { ID[maxcount+i]=(char*)malloc(sizeof(char*)*ID_LENGTH); selfID[maxcount+i]=(char*)malloc(sizeof(char*)*ID_LENGTH); ACName[maxcount+i]=(char*)malloc(sizeof(char*)*NAME_LENGTH); selfName[maxcount+i]=(char*)malloc(sizeof(char*)*NAME_LENGTH); } maxcount+=INCREMENT_LENGTH; } count++,Number++; Input(in_out, debit_credit, id, acname, selfid, selfname); cout<<"ID[Number] = "<<ID[Number]<<endl; cout<<"ACName[Number] = "<<ACName[Number]<<endl; cout<<"selfID[Number] = "<<selfID[Number]<<endl; cout<<"selfName[Number] = "<<selfName[Number]<<endl; } int Save(char *savefile) { if( (fp=fopen(savefile,"w")) == NULL) exit(0); fprintf(fp,"%d\n",count+1);//给出记录条数 Number = 0; while(Number != count+1) { fprintf(fp, "%ld %ld %s %s %s %s\n", In_Out[Number], Debit_Credit[Number], ID[Number], ACName[Number], selfID[Number], selfName[Number]); Number++; } fclose(fp); return 1; }};int main(void){ Log lg1; // Card cd1; lg1.New(111,100,"33#1","asd1","Card0001","WJK"); lg1.New(111,100,"33#2","123212","Card000222","WJS22"); lg1.New(111,100,"33#3","sdasR3","Card0003","WJW"); lg1.New(111,100,"#4","asd1","Card0002","WJS"); lg1.New(111,100,"#5","sds1","Card0001","WJK"); lg1.New(111,100,"#6","zxc1","Card0002","WJK"); lg1.New(111,100,"#7","vzczx1","Card0001","WJK"); lg1.New(111,100,"#8","zzxc1","Card0001","WJK"); lg1.New(111,100,"#9","jhf1","Card0001","WJS"); lg1.Save("Hello.txt"); // cd1.LoadFromLog(lg1); // cd1.Save("Happy.txt"); system("pause"); return 0;}