将函数指针作为参数传递给dll函数并从dll内部调用它们是否安全?
发布时间:2020-12-14 02:08:35 所属栏目:Windows 来源:网络整理
导读:我想将一些(dll或不)函数指针作为参数传递给某些dll函数,并从dll内部调用它们.我想知道它是否安全,因为我在 http://publib.boulder.ibm.com/infocenter/zos/v1r10/index.jsp?topic=/com.ibm.zos.r10.cbcpx01/fpref.htm上找到了一条信息: 在DLL代码中,假设函
我想将一些(dll或不)函数指针作为参数传递给某些dll函数,并从dll内部调用它们.我想知道它是否安全,因为我在
http://publib.boulder.ibm.com/infocenter/zos/v1r10/index.jsp?topic=/com.ibm.zos.r10.cbcpx01/fpref.htm上找到了一条信息:
在DLL代码中,假设函数指针指向函数描述符.通过首先通过解引用指针获得函数地址来进行函数指针调用;然后,分支到函数入口.当非DLL函数指针传递给DLL代码时,它直接指向函数入口.尝试通过这样的指针取消引用会产生未定义的函数地址.随后分支到未定义的地址可能会导致异常. 此规则是否也适用于Visual Studio和其他编译器? 我正在尝试做的是解决各种dll和非dll函数之间的内存分配和释放问题.我的想法是将两个函数指针(用于公共分配和解除分配函数)传递给某些初始化中的每个dll(例如,Initialize(& malloc,& free)),然后使用这些常见且因此始终兼容的函数进行所有内存管理. 解决方法
这不是真的. DLL代码以与非DLL代码完全相同的方式处理函数指针.如果不是这种情况,则无法在DLL中使用标准库函数,如qsort()(需要函数指针参数).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 安装 – Wix返回错误“在模块中找不到CA或UI入口
- .net – 无法在Windows Server 2008 R2上的IIS7.
- 在NSIS中使用“ExecWait”时,禁止Windows命令输出
- 在Win32 Delphi应用程序中存储用户首选项和设置的
- .net – ClickOnce仍然是Windows Forms应用程序部
- iis – 计算机上找不到服务WAS’.’
- windows – 有没有办法使用GroupPolicy设置对WMI
- 由于私钥过滤,signtool无法在Windows 10上找到证
- 键盘语言更改在Windows 7上的PhpStorm中不起作用
- Windows 7的任务栏(启用了MainFormOnTaskbar)的D
热点阅读