두 번째 while 루프는 두 번째 반복에서 xstring 줄 1441에 예외를 던지고 있습니다. 이 때문에 첫 번째 패스에 : xstring 줄 1331의 문자열 첨자가
Testthis->NAME[n] = 'B'
Testthis->NAME[n+1] = 'O'
Testthis->NAME = "BOD MQL"
모든 디버그
cout
문에서 확인됩니다. 나는이 하나에 난처하게된다.
struct Node * ProbableMatch(struct Node * Look_in, int MaxNodes, char Findthis[64]){
system("cls");
int i=0,proba=100,CurrentHigh=100;
size_t pos1=1,n1=0,n2=0,pos2=1;
//char s[64];
struct Node * CurrentHighProb;
struct Node * Testthis;
CurrentHighProb=new(Node);
Testthis=new(Node);
Testthis=Look_in;
//for(i=0;i==MaxNodes;i++)
while(!Testthis || i!=ccounter)
{
gotoxy(0,0);
int n=0;
n1=sizeof(Look_in->NAME);
n2=sizeof(Findthis);
string str1;
char str2[64];
cout<<Testthis->NAME[n]<<endl<<Testthis->NAME<<endl;
cout<<Testthis->NAME[n+1]<<endl;
while(Testthis->NAME[n]!='\0'){ //mannually coverts the strings since I am having hell with the inbuilt functions
cout<<Testthis->NAME[n];
str1[n]=Testthis->NAME[n];
if(Testthis->NAME[n+1]=='\0'){str1[n+1]='\0';}//makes NULL terminated strings
n++;
}//end of while
//strcpy_s(cstr, str1.length());
//strcpy_s(str1,sizeof(Look_in->NAME),Look_in->NAME);
//strcpy_s(str2,sizeof(Findthis),Findthis);
//char * cstr1 = new char[str1.length()+1];
cout<<str1.compare(pos1,n1,Findthis,0,n2)<<" is the value of the string compare "<<endl;
proba=str1.compare(pos1,n1,Findthis,0,n2);//compares Findthis to the varibles read from the database from string matches
//DEBUG STUFF
cout<<endl<<sizeof(Look_in->NAME)<<" sizeof(Look_in->NAME)"<<Look_in->NAME<<endl;
cout<<sizeof(Findthis)<<" sizeof(Findthis)"<<Findthis<<endl;
cout<<sizeof(str1)<<" "<<str1<<" string1 string2 "<<str2<<" "<<sizeof(str2)<<endl;
//cout<<sizeof(str1)<<" reinterpret_cast< char *>(str1)"<<endl;
system("PAUSE");
cout<<"\n Probability of "<<Look_in->NAME<<" matching "<<Findthis<<" is "<<proba<<" ."<<endl;
//ENDOFDEBUG FOR FUNCTION
Testthis->prob=proba;
if(proba==0)
{
cout<<"proba equals zero, match found returning "<<Look_in<<endl;
//delete[] cstr1;
return Testthis; // returns the pointer of the varible that best matched the search
}
if(proba<CurrentHigh){
CurrentHigh=proba;
CurrentHighProb=Testthis;
}
i++;
Testthis=Testthis->next;
}
cout<<"Perfect match not found after "<<i<<" number of searches, returning this highest probable match "<<CurrentHighProb<<" "<<proba<<endl;
system("PAUSE");
//delete[] cstr1;
return CurrentHighProb;
}
'Testthis = new (Node); Testthis = Look_in;'안녕하세요, 메모리 누수가 있습니다. 올바른 C++ 코드를 작성하는 방법을 배우려면 [좋은 입문 C++ 책] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)을 얻는 것을 고려하십시오. –
고마워요.하지만이 시점에서 저는 올바른 항목을 찾기 위해 함수를 얻으려고합니다. 프로그램이 끝나면 머리 포인터를 전달하는 것으로 전환 할 것입니다. – John