访问冲突读取位置 0xcccccccc

Posted

技术标签:

【中文标题】访问冲突读取位置 0xcccccccc【英文标题】:Access violation reading location 0xcccccccc 【发布时间】:2012-04-20 14:54:01 【问题描述】:

我正在尝试在 openCV 2.2 中运行 squares.cpp 示例。代码在 Visual Studio 2008 中编译和构建没有错误。但是,当我运行可执行文件时(即在运行时),我收到一个错误说明

Unhandled exception at 0x004ac363 in OpenCVRectangle.exe: 0xC0000005: Access violation reading location 0xcccccccc.

这发生在定义:vector<vector<Point> > squares; 在主函数中

有人可以帮忙吗,为什么会这样? 我发现值 0xcccccc 通常是一个未初始化或错误的变量,但不明白为什么我在这一行得到这个异常。

完整的示例代码可以在http://pastebin.com/MTaXVcQz找到

【问题讨论】:

0xCCCCCCCC 是未初始化的内存When and why will an OS initialise memory to 0xCD, 0xDD, etc. on malloc/free/new/delete? 【参考方案1】:

您的代码在带有 OpenCV 2.3.0 的 Mac OS X 上运行良好,但众所周知,OpenCV 在不同的操作系统中呈现不同的行为。

首先,检查您的代码在 Release 和 Debug 版本中是否存在此问题。

升级到 OpenCV 2.3.1 on Windows 看看问题是否消失。

【讨论】:

【参考方案2】:

namedWindow 在您链接到的代码中是一个看起来没有在此范围内定义的函数。可能是它试图解释为尚未定义的变量,而不是函数。我会说它可能缺少某种图书馆?没有进一步的上下文很难说,但vector<vector<Point> > squares; 应该是违规行为。

【讨论】:

【参考方案3】:

在VS中按Ctrl+Alt+E,开启所有异常检查,在debug模式下运行,查看异常出现的地方。这应该足够理解了。

【讨论】:

以上是关于访问冲突读取位置 0xcccccccc的主要内容,如果未能解决你的问题,请参考以下文章

访问冲突写入位置 0xcccccccc

访问冲突读取位置和错误读取字符串的字符

选择PixelFormat 访问冲突读取位置

glDrawPixels 访问冲突读取位置

使用 ReadFile 时访问冲突读取位置

**** 访问冲突读取位置处未处理的异常 *******