【问题标题】:Invalid Pointer Operation + Call Stack无效的指针操作 + 调用堆栈
【发布时间】:2010-08-14 04:51:21
【问题描述】:

当我收到“无效指针操作”错误时,这是​​我的调用堆栈窗口:

CalStack http://m8spy.com//PersonalFs/M8SPY_Images/CallStack_1.png

这个错误的原因是什么?

谢谢

【问题讨论】:

  • 如果不看一些代码就很难分辨...
  • 首先展示TChunk.Destroy的实现

标签: delphi free callstack


【解决方案1】:

您试图释放内存管理器不识别为属于它的内存。

异常来自对象的析构函数,这表明您正在尝试释放已被释放的对象。否则,您将在一个变量上调用Free,而该变量一开始就没有有效的对象引用;注意关于未初始化变量的编译器警告。

【讨论】:

  • 感谢您的回复。但我不知道哪个对象已经被释放了!! .我怎样才能找到它?
  • 嗯,异常发生在菜单项的 Click 方法中,它可能调用了您编写的 OnClick 处理程序。从那里开始。
  • 如果您已经在调试器中拥有它,您可以从堆栈跟踪的顶部开始并双击每一行。您可以向后跟踪以查看调用内容。您应该考虑使用 FastMM。它非常适合跟踪内存管理问题。
【解决方案2】:

请参阅this article 中的“FastMM”项。虽然它说的是内存泄漏,但它实际上是对调试内存管理器的介绍,这些管理器用于发现动态内存的问题 - 就像你的情况一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 2013-01-20
    • 2012-04-24
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多