在Linux中。每對dlsym(3)Linux手冊頁,爲什麼dlsym()返回的符號值爲空?
*Since the value of the symbol could actually be NULL
(so that a NULL return from dlsym() need not indicate an error),*
這是爲什麼,當可在符號(函數,特別是)是實際NULL?我正在審查代碼,並找到一個使用dlerror首先清理,dlsym next和dlerror檢查錯誤的作品。但在調用它之前,它不會檢查由此產生的函數爲空:
- dlerror();
- a_func_name = ... dlsym(...);
- if(dlerror())goto end;
- a_func_name(...); //從不檢查a_func_name == NULL;
我只是一個評論者,所以沒有選擇只是添加支票。也許作者知道NULL永遠不會被返回。我的工作是挑戰,但不知道什麼可以使這個返回一個有效的NULL,這樣我就可以檢查在這個代碼的上下文中是否可以滿足這樣的條件。沒有找到適合Google閱讀的內容,除非您想明確說明哪個更好,否則指向好的文檔就足夠了。
您可以在彙編程序中或使用GCC特定技巧定義給定的符號位於地址0,並且您可以「符合」該符號。 –
明白了。謝謝。 – bokusama