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

前往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。最后编译,运行,没有看到哪个烦人的异常提示了

网友评论
最新图文
  • 在delphi 获取特殊目录 SHGetSpecialFolderLocation SHGetPathFromIDList

    在写应用程序的时候,我们经常会用到读取windows系统的一些特殊的目录。比如 桌面 快速启动栏的路径等等。下面介绍两个API函数 SHGetSpecialFolderLocation SHGetPathFromIDList我们先看代码:  代码文件:unit Unit1;interfaceuses Wind,西西hvbet688园-最安全的下载资讯站。

  • Delphi通过ADO读写数据库

    ADO是一种程序对象,用于表示用户数据库中的数据结构和所包含的数据。ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。例如,如果您希,西西hvbet688园-最安全的下载资讯站。

  • Delphi如何实现抓图技术

    摘 要:本文以Delphi7.0作为开发平台,给出了网络监控hvbet688中的两种屏幕抓图技术的设计方法和步骤。介绍了教师在计算机机房内教学时,如何监控学生计算机显示器上的画面,以保证教学的质量和效果。  引言  随着网络技术的飞速发展,计算机网络在各高等院校教学中,西西hvbet688园-最安全的下载资讯站。

  • delphi中使用ADOQuery时的几个问题解决方案

    问题1、文参数的支持问题今天在使用ClientDataSource查询的时候,“divece_name”参数赋值为“%笔记本电脑%”,但是使用SQL Server Profiler跟踪后发现查询的语句变为:查询的数据提交到数据库时不完整,当我把N'@P1varchar(8)', '%笔记本%'就可,西西hvbet688园-最安全的下载资讯站。

  • android计时器、android 格式化时间计数器的实现

    完整的Android程序,主要功能是实现秒表计时需求:默认为"00:00:00",点击开始按钮时清零后开始计时,出现如10:28:34。点击停止的时候停止计时。问题:使用Calendar DateFormat的方法,不设置时区获取到的小时是本地时区的(东八区的就是8),设,西西hvbet688园-最安全的下载资讯站。