이것은 역 사인을 계산하는 함수입니다. 그것은 0.51-0.8 사이의 값에 대한 세그먼트 오류가 발생합니다이 세분화 오류의 원인
double my_asin(double x)
{
double sum = x;
if(x < -1.0 || x > 1.0)
{
/* error handling */
}
else if(x < -0.5)
{
sum = -0.5*PI + my_asin(my_sqrt(1-my_pow(x,2))); // SIG_SEGV
return sum;
}
else if(x > 0.5)
{
sum = 0.5*PI - my_asin(my_sqrt(1-my_pow(x,2))); // SIG_SEGV
return sum;
}
/* variable initialization */
while(my_abs(b - a) > EPSILON2)
{
/*code*/
}
/* return result */
}
GDB와 Valgrind의 오류 당신이 너무 여기에 게시 할 필요가 없습니다 않는 생각을 정확히 수행하는 함수 my_pow에서 발생 말해 모두. 제발 올바른 방향으로 나를 봐 주시겠습니까? 정말 고마워.
my_pow에서 오류가 발생하면 문제가 있다고 생각되는 부분을 수정해야합니다. 여기에 게시 할 필요가 없습니다. – nvoigt
기다려 ... GDB와 valgrind 모두 오류가 my_pow에 있다는 것을 알기 때문에 SegFault가 원인이라고 생각합니다. 따라서 여기에 게시 할 모든 이유가 있습니다. – Sinkingpoint
interjay의 대답에 따르면 페이지가 낮 으면 my_pow에 문제가 없습니다. 그래서 여기에 게시했습니다. 오류가 발생한 곳의 my_pow로 이동했습니다. 그러나 my_pow는 오류를 발생시키지 않았습니다. – imre