代码之家  ›  专栏  ›  技术社区  ›  subbu

memset中的异常

  •  1
  • subbu  · 技术社区  · 16 年前

    当尝试执行memset时,它会给出以下异常

    “sendolltesteexe.exe中的0x1023af7d(pxsmartinterface.dll)处出现未处理的异常:0xc000005:写入位置0x40e3a80e时发生访问冲突。”

    我的memset语句将如下所示

    memset(lpstatus,0,csstatus.getlength());

    2 回复  |  直到 16 年前
        1
  •  2
  •   Potatoswatter    16 年前

    这不是一个C++异常,它是一个操作异常。或者您访问了不存在的内存,或者您损坏了数据结构并使其析构函数崩溃。(我假设你之前要把一个街区调零 delete 它所包含的结构。)

    在C++中,通常不调用 memset . std::fill 做同样的事情 清零 如果可能的话),但具有类型安全性。

    如果你想把内存块归零 free 使用它们,您需要一个调试库。在调用了一个对象的析构函数之后和之前,没有一种干净的方法可以访问该对象的内存。 自由的 被调用。调试malloc可能是您的开发环境的一个特性。

    编辑:您可能可以访问- 自由的 通过重写对象而不是数组的内存 删除 . 但对于初学者/中间人来说,这不是一项活动。

        2
  •  1
  •   R Samuel Klatchko    16 年前

    很可能, lpStatus 不指向 csStatus.GetLength() 字节的可写内存。你需要检查一下 LP状态 已设置。

    推荐文章