【问题标题】:How can malloc() throw an Access violation error?malloc() 如何抛出访问冲突错误?
【发布时间】:2016-11-28 02:32:49
【问题描述】:

导致malloc() 引发访问冲突错误的原因是什么?我担心它正在分配损坏的空间内存(难以调试)。但是,还有其他可能的原因吗?谢谢。

如图所示,大小值是正确的。

【问题讨论】:

  • 一个原因可能是代码中某处的错误损坏了堆,而malloc() 因堆损坏而炸毁。附:不要在 C++ 代码中使用malloc()
  • 这就是我所担心的。这不是我的代码,这是标准库的 Windows 实现。
  • 堆损坏通常在它发生很久之后就表现出来,并且出现在一段不相关的代码中。这种方式很恶心。所以,对甜甜圈来说,错误就在你代码中的某个地方,而且可能不在失败的代码附近。
  • @Mr G0z:你的代码破坏了堆完整性。之后任何代码都可能崩溃,包括标准库代码。这就是你正在观察的。查看您在屏幕截图中发布的代码毫无意义。在这种情况下,这不是罪魁祸首。
  • C++ 库当然可以使用malloc() 作为其new 实现的一部分。

标签: c++ segmentation-fault malloc


【解决方案1】:

一些错误代码破坏了堆内存,然后你调用了内存操作,发生了异常。您可以尝试一个名为 Application Verifier 的工具,它可以帮助您找到错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    相关资源
    最近更新 更多