【发布时间】:2013-04-10 21:46:09
【问题描述】:
我是 C++ 新手,不明白为什么会收到错误“访问冲突读取位置”。这是我的代码:
gdiscreen();
int startX = 1823 - minusX;
int startY = 915 - minusY;
for (int i = startX; i < startX + 61; i++)
{
for (int j = startY; j < startY + 70; j++)
{
Color pixelColor;
bitmap->GetPixel(i, j, &pixelColor);
cout << pixelColor.GetValue() << " ";
}
cout << endl;
}
gdiscreen() 可以在这里找到: http://forums.codeguru.com/showthread.php?476912-GDI-screenshot-save-to-JPG
【问题讨论】:
-
它会打印任何东西吗?还是直接失败?位图从何而来?确定它的初始化正确吗?
-
还有更多问题。
minusX和minusY是什么?您是否检查过您是否使用有效的i和j坐标进行访问? -
“访问冲突”的确切含义并不那么重要;重要的是这意味着你的程序不正确,需要调试。
-
这意味着你做错了记忆。
bitmap很可能不是您认为的那样。做一些调试。创建testcase。 -
它不打印任何东西,并且我在 for 循环之外的测试用例失败了。我在链接中使用了相同的代码,但将位图设为全局指针变量(我习惯于 java/C#)。还有什么想法吗?
标签: c++ access-violation