在跨动态库使用内存时应注意的问题
来源:互联网 发布:软件开发报价单模板 编辑:程序博客网 时间:2024/06/08 10:03
在一个动态库中分配的内存,最好不要在另一个动态库中释放,这个要注意,否则可能会引起内存错误.如果用 GlobalAlloc 和 GlobalFree 可以避免这样的问题。
在跨动态库的内存使用中开辟和释放内存容易出问题(Windows 核心编程 P465 有说明),如有 A,B两个动态库,在 B 动态库中用 malloc 或 new 或者用 CString 等隐藏的 malloc 或 new 方法方式开辟了内存后,在 A 动态库中使用内存并释放后会出现内存错误,解决方法就是哪个动态库分配的内存,哪个动态库释放.
再有就是用
CoTaskMemAlloc(CoTaskMemFree) 函数,GlobalAlloc(GlobalFree)等函数替代 malloc 或 new 等普通
的内存分配函数,这样 B 动态库中分配的内存可以在 A 中释放.
另外在字符串的使用中,用 SysAllocString(SysFreeString) 也可以达到此目的.注意的是其它释放内存的函数调用后,其对应的内存指针中的内容会改变,而 SysFreeString 对应的内存指针中的内容不会被改变,就像没有被释放一样,其实被释放了.
与 COM 相关的内存函数都是可以跨动态库分配,释放的.
- 在跨动态库使用内存时应注意的问题
- 使用fopen时应注意的问题
- 使用Sql时应注意的问题
- Block 在使用时应注意哪些会使内存泄露的地方?
- 在JSP中使用SmartUpload下载应注意的问题
- jquery在IE中使用append应注意的问题
- jquery在IE中使用append应注意的问题
- 内存-文件映射应注意的问题
- 在不使用框架自己写注册登录模块时应注意的问题
- vb.net调用vc动态库时传递数组参数应注意的问题
- 网页页面在布局时应注意的问题
- 在使用struts1时应注意的事项
- CArray 模板使用时应注意的问题.
- 使用FileSystemWatcher时应注意的两个小问题
- pthread_create()和pthread_atfork()函数使用时应注意的问题
- lwuit使用资源时应注意的问题
- struts1 验证框架使用时应注意的问题
- ExecuteScalar使用时应注意的小问题
- 测试在嵌入式软件中的重要性
- 递归
- 每天一道算法题4 查找最小的k个元素
- Preface
- Http协议详解
- 在跨动态库使用内存时应注意的问题
- arm蛋疼汇编 part9 -- elf文件瞎扯
- 尝试一下GNU Guile
- 处女秀
- 精简版Shell架构
- Android 平台下的 SQLite 使用
- Lua bind for C 和 conf 实现
- 测试工具列表
- javascript 高级程序设计