首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么MIcroQuill Smartheap在嵌入mem_bad_pointer后抛出"mem_bad_pointer“错误?

为什么MIcroQuill Smartheap在嵌入mem_bad_pointer后抛出"mem_bad_pointer“错误?
EN

Stack Overflow用户
提问于 2009-01-30 05:01:13
回答 1查看 1.4K关注 0票数 2

我将perl嵌入到使用C++的斯马瑟普应用程序中。不管我是编译perl来使用它自己的malloc还是系统的malloc,我都会得到一堆错误的mem___bad_pointer对话框。当我只点击“确定”并忽略错误时,它似乎工作得很好,但显然我需要真正解决这个问题。

我是否需要将SmartHeap编译到我的perl构建中?那可行吗?

下面是关于我可以找到的mem_bad_ 唯一的文件的页面,但是我离解决这个问题已经很近了。我不明白perl和Smartheap是如何或在哪里相互冲突的。任何指南针都会赏识。

  • 指针是由SmartHeap以外的内存管理器分配的,例如从另一个DLL或EXE,或者从编译器运行时库。检查您的映射文件,以查看malloc、_fmalloc/farmalloc或operator new的SmartHeap版本正在链接中。
  • 指针为“野生”(未初始化),在堆栈(局部变量)上分配,或在其他情况下无效。
  • 指针先前已被释放。如果SmartHeap释放了最初分配指针的页面,SmartHeap将无法检测到它是双空闲的。但是,SmartHeap将报告无效指针。使用dbgMemDeferFreeing来捕获这种类型的错误。
  • 自分配时间以来,指针被递增或减少。
  • 对于16位x86,在分配后将指针转换为接近指针,在这种情况下指针的段部分已经丢失。
  • 从其中分配指针的内存池已被释放,或者SmartHeap已从任务中取消注册。
  • 分配指针的任务已经结束(见B.4节)。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-02-12 21:37:47

如果没有看到代码,就很难调试这个问题。也许您正在使用smartheap和常规内存管理器分配内存。这可能是在没有智能堆的dll构建中分配内存时造成的。

根据您的代码,分配可能是很好的,并且您可能要在所有涂层内存区域之外编写。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/494530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档