delphi7|Delphi 中 Invalid pointer operation 异常的解决办法 .

发布时间:2009-05-16   来源:Delphi    点击:   
字号:

【www.quanqiunao.cn--Delphi】

在调试一个Delphi 7 编写的多线程的程序的时候提示

"Debugger Deception Notfication"

然后就弹出

“Invalid pointer operation”的异常

 

解决办法是

Windows中如果一个动态库导出函数以参数形式传递或者返回了一个长字符串或者动态数组(无论是直接传递还是包含在一个对象中),那么动态库以及其调用程序都必须得引用ShareMem单元。同样,如果程序或者库通过New或者GetMem申请了内存,并且该内存在另一个模块中通过Dispose或FreeMem释放,也得这么做。务必把ShareMem放在程序或者库所有引用单元之首。

ShareMem是 BORLANDMM.dll 内存管理单元接口,它允许模块间共享动态申请内存。BORLANDMM.dll必须与使用了改单元的程序或者Dll一块儿部署。当程序或者动态库使用了ShareMem,其内存管理将会由BORLANDMM.dll接管。

注意:
Linux下使用glibc的malloc来管理共享内存。】

上述问题仅在windows里才有啊,呵呵,于是在dll里把Uses子句的top 1增加ShareMem引用,另外在应用程序的Project域的Uses子句第一个引用也加上ShareMem。最后编译,运行,没有看到哪个烦人的异常提示了

本文来源:http://www.quanqiunao.cn/bianchengkaifa/12001/