delphi - 无效的指针操作 - Delphi XE

标签 delphi debugging exception delphi-xe

我似乎无法弄清楚这一点。我的程序编译并运行成功,但在调试期间仅在关闭程序时弹出一个消息框,显示“无效的指针操作”。我煞费苦心地检查了所有 FormCloseQuery 和 FormDestory 事件是否有任何语法或逻辑错误。我发现没有,它们按预期执行,没有任何错误。

enter image description here

当我告诉编译器在无效指针操作错误时中断时,它不会执行任何操作,只是挂起程序。此时,我必须终止或终止该进程。

你如何解决这个问题?

提前致谢,

最佳答案

当内存管理器尝试释放无效内存时,会引发无效指针异常。可以通过三种方式实现此目的。

最常见的是因为您试图释放已经释放的对象。如果您打开 FastMM 的 FullDebugMode,它会检测到这一点并直接指出问题所在。 (但请确保构建一个映射文件,以便它包含创建有用的堆栈跟踪所需的信息。)

第二种方法是如果您尝试释放分配给内存管理器以外的地方的内存。当将字符串从 Delphi EXE 传递到未使用共享内存管理器功能的 Delphi DLL 时,我已经见过几次这种情况。

第三种方法涉及直接搞乱指针,可能不适用于您。如果您尝试 FreeMemDispose 一个不引用 FastMM 分配的实际内存块的错误指针,您将收到此错误。

这很可能是第一个。使用FullDebugMode,您将轻松找到问题的根源。

关于delphi - 无效的指针操作 - Delphi XE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113097/

相关文章:

javascript - 获取 Canvas 中控制台位置处的像素颜色

运行Web服务客户端时出现java.lang.NoClassDefFoundError

c# - 当序列长度不相同时抛出哪个异常

android - 如何使用 TArc 制作 Google 加载微调器?

c++ - 调试器在尝试跳出 C++11 std lib 时更深入

javascript - 如何将 TCanvas->Arc 值转换为 SVG Arc

java - eclipse 调试器可以跟随新生成的线程吗

java - Hystrix:验证失败时出现 HystrixBadRequestException

delphi - 如何动态加载和调用 BPL 包中的函数

delphi - 如何在Delphi中将对象方法作为参数传递,然后调用它?