问题描述
当我将 null
指针传递给 dlclose
时,我会遇到崩溃.
I experience a crash when I pass a null
pointer to dlclose
.
在调用 dlclose
之前是否应该检查null?
Should I check for null before calling dlclose
?
POSIX对此一无所知: http://pubs.opengroup.org/onlinepubs/7908799/xsh/dlclose.html
POSIX tells nothing about this:http://pubs.opengroup.org/onlinepubs/7908799/xsh/dlclose.html
是未定义的行为还是 dlclose
实现中的错误?
Is it undefined behaviour or a bug in dlclose
implementation?
推荐答案
这很棘手.POSIX指出
This is tricky. POSIX states that
,从中可以推断出它应该为任意指针检测该指针是否指向打开的对象.Linux/Glibc版本显然没有进行这种检查,因此您需要自己检查 NULL
.
from which you could infer that it should detect, for an arbitrary pointer, whether that pointer refers to an open object. The Linux/Glibc version apparently does no such check, so you'll want to check for NULL
yourself.
[此外,Linux联机帮助页也不是很有帮助.关于 libdl
函数的行为是非常隐含的,在没有非常清楚地声明符合性的情况下遵从POSIX.]
[Aside, the Linux manpage isn't very helpful either. It's quite implicit about libdl
functions' behavior, deferring to POSIX without very clearly claiming conformance.]
这篇关于调用 dlclose(NULL) 是否安全?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!