当前位置:  开发笔记 > 编程语言 > 正文

.访问违规阅读位置

如何解决《.访问违规阅读位置》经验,为你挑选了1个好方法。

我遇到了一个非常奇怪的问题.

代码如下:

::boost::shared_ptr pInfo=CQUserViewDataManager::GetInstance()->GetImageFileInfo(nIndex); 
Image* pImage=pInfo->m_pThumbnail;
if(pImage==NULL)
    pImage=m_pStretchedDefaultThumbImage;
else
{
    //
    int sourceWidth  = pInfo->GetWidth();
    int sourceHeight = pInfo->GetHeight();

    int destX = 0,
        destY = 0; 

    float nPercent  = 0;
    float nPercentW = ((float)GetThumbImageWidth()/(float)sourceWidth);;
    float nPercentH = ((float)GetThumbImageHeight()/(float)sourceHeight);

    if(nPercentH < nPercentW)
    {
        nPercent = nPercentH;
        destX    = (int)((GetThumbImageWidth() - (sourceWidth * nPercent))/2);
    }
    else
    {
        nPercent = nPercentW;
        destY    = (int)((GetThumbImageHeight() - (sourceHeight * nPercent))/2);
    }

    int destWidth  = (int)(sourceWidth * nPercent);
    int destHeight = (int)(sourceHeight * nPercent);
    rcShowImage=CRect(rc.left+destX, rc.top+destY,rc.left+destX+destWidth,rc.top+destY+destHeight);
}
ASSERT(pImage != NULL); // passed assertion...
graphics.DrawImage(pImage,rcShowImage.left,rcShowImage.top,
rcShowImage.Width(),rcShowImage.Height()); // problem happened here.

我收到以下例外:

First-chance exception at 0x004095b0 in ec.exe: 0xC0000005: Access violation reading location 0xfeeefef2.
Unhandled exception at 0x004095b0 in ec.exe: 0xC0000005: Access violation reading location 0xfeeefef2.

我已经检查了pImage,我确定什么时候graphics.DrawImage被调用,但事实并非如此NULL.

为什么会出现这样的问题?

什么是0xfeeefef2

bk1e.. 11

0xfeeefeee是一个填充模式,Windows堆的调试版本(不是C运行时堆)用于未初始化的内存.0xfeeefef20xfeeefeee+4.听起来你正在取消引用一个未初始化的指针,该指针位于从堆分配的内存块中(或从中复制).

在调试器中启动程序时,调试堆会自动启用,而不是使用调试器附加到已经运行的程序.

由Mario Hewardt和Daniel Pravat编写的高级Windows调试书有一些关于Windows堆的正确信息,事实证明,关于堆的章节在网站上作为样本章节.



1> bk1e..:

0xfeeefeee是一个填充模式,Windows堆的调试版本(不是C运行时堆)用于未初始化的内存.0xfeeefef20xfeeefeee+4.听起来你正在取消引用一个未初始化的指针,该指针位于从堆分配的内存块中(或从中复制).

在调试器中启动程序时,调试堆会自动启用,而不是使用调试器附加到已经运行的程序.

由Mario Hewardt和Daniel Pravat编写的高级Windows调试书有一些关于Windows堆的正确信息,事实证明,关于堆的章节在网站上作为样本章节.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有