예상되는 분할 오류로부터 안전하게 복구하려고합니다. 내 canAlloc() 함수를 사용하여 검사를 피하려고합니다. canAllow가 false를 반환하면 A0 (Ackermann이 표시되지 않는 경우)는 main 메소드에서 catch 할 수있는 예외를 throw해야합니다. checkTable과 saveInTable은 모두 map<int hash, int value>
을 사용하여 A0의 반환 값을 저장하는 함수입니다. 코멘트에서 C++에서 C 동적 메모리 함수를 사용하여 분할 오류 방지
bool canAlloc(){
bool reBool = false;
int * memch = (int*)calloc (10000, sizeof(int));
reBool = (memch != NULL);
free(memch);
return reBool;
}
int A0(int m, int n){
if(!canAlloc()) throw;
int reInt = checkReturnTable(m,n);
if(reInt == -1){
if(m == 0){
return n + 1;
} else if(m > 0){
if(n == 0){
reInt = A0(m-1,1);
} else if(n > 0){
reInt = A0(m-1, A0(m,n-1));
}
}
saveInReturnTable(m,n,reInt);
return reInt;
} else return reInt;
}
:
주에서 나는 예외
try{} catch(...){}
를 잡기 위해 try-catch 블록을 가지고있다. 내가 알기론 세 가지 기간은 던져진 예외를 잡아야한다. 그리고 내가 알고 있듯이throw
키워드는 지정자없이 예외를 던지지만 여전히 3 개의 점으로 잡힐 수 있습니다.
"'throw'을?" 다시 무슨 언어입니까? – cnicutar
질문을 이해할 수 없습니다. 그리고 거기에 수표는별로 알려주지 않습니다. 한 시점에서 일부 메모리를 할당 할 수 있다고해서 다른 시점에 메모리를 할당 할 수있는 것은 아닙니다. – johannes
'던짐'무엇? :) –