нарушение прав доступа (c системный код исключения: c0000005) при обращении к указателю ccomptr и сбой приложения - PullRequest
0 голосов
/ 20 сентября 2011

При доступе к компьютеру я получаю ошибку нарушения доступа. Ошибка не согласована и воспроизводима только при попытке получить доступ к огромным данным. У меня есть 2900 компонентов, и для каждого компонента я вызываю функцию. В этой функции я обращаюсь к ccompter, в то время как в этом приложении происходит сбой в случайном положении, например, на 200, 210, 2500 и т. Д. Положение не фиксируется при сбое.

Эта проблема характерна для системы со следующей конфигурацией: Windows Server 2003 R2 Xeon CPU, 2,66 ГГц 2 ГБ ОЗУ

вот мой код

XGGraphicAttribute* pAttr = pExtraGraphicInfo->GetAttribute();
if(pAttr)
{
    DBAttributes* db_attributes = NULL;

    db_attributes = static_cast<DBAttributes*> (pAttr->GetDBAttributes());

    CComPtr<IEPGraphicData> pIEPGraphicData;

    if(db_attributes)
    {
        pIEPGraphicData = db_attributes->GetGraphicData(); // here my app got crashed 
    }

}


IEPGraphicData* DBAttributes::GetGraphicData () const
{
    return m_pIEPGraphicData;
}

1 Ответ

0 голосов
/ 20 сентября 2011

Возможности:

  1. Объект, возвращаемый функцией GetGraphicData (), может не поддерживать интерфейс IEPGraphicData.Я ожидаю, что интеллектуальное назначение указателя приведет к нулевому указателю, а не к нарушению прав доступа.

  2. Объект db_attributes был удален из-под ваших ног.

...