Linux의 경우. dlsym (3) Linux 매뉴얼 페이지dlsym()에 의해 반환 된 심볼의 값이 null 일 수있는 이유는 무엇입니까?
*Since the value of the symbol could actually be NULL
(so that a NULL return from dlsym() need not indicate an error),*
이유는 무엇인가? 나는 코드를 검토 중이며 dlerror를 사용하여 먼저 정리하고, 다음에 dlsym을 그리고, 오류를 확인하기 위해 dlerror를 사용하여 조각을 찾았습니다. 그러나 호출 전에 결과 함수가 null인지 확인하지 않습니다.
- dlerror();
- a_func_name = ... dlsym (...);
- if (dlerror()) goto end;
- a_func_name (...); // a_func_name == NULL 인 경우에는 확인하지 않습니다.
나는 그래서 그냥 수표를 추가 할 수있는 옵션이없는 단지 검토입니다. 아마도 저자는 NULL을 반환 할 수 없다는 것을 알고 있습니다. 내 직업은 그것을 도전하는 것이지만이 반환 값을 유효한 NULL로 만들 수 있는지 알지 못하므로이 코드의 컨텍스트에서 조건이 충족 될 수 있는지 확인할 수 있습니다. Google에서 읽을만한 것을 찾지 못했지만 훌륭한 문서를 가리키는 포인터가 무엇인지 명확하게 설명하고 싶지 않으면 충분합니다.
어셈블러에서 또는 GCC 특정 트릭을 사용하여 주어진 심볼을 주소 0에 정의 할 수 있으며 심볼을'dlsym' 할 수 있습니다. –
알았어요. 감사. – bokusama