lstrcpy () порождение исключений в коде Visual C++

Я использовал MFC виртуальное управление списком для улучшения производительности, и я обрабатываю GetDispInfo (NMHDR* pNMHDR, LRESULT* pResult) для заполнения ListCtrl. Соответствующие нормы в том методе следующие:

если (pItem-> маска && LVIF_TEXT) {

    switch(pItem->iSubItem)

    {
        case 0:
            lstrcpy(pItem->pszText, rLabel.m_strText);  
        break;
        case 1:
            sprintf(pItem->pszText, "%d", p.o_Value);
        break;
        default:
            ASSERT(0);
        break;
    }
}

Здесь, когда я использую lstrcpy (), когда я - srolling вниз/, я получаю большое исключения, говоря исключение Первого шанса в 0x7c80c741 в test_list_control.exe: 0xC0000005: местоположение записи Нарушения прав доступа 0xb70bf2ac. Эти сообщения появляются в выводе отладки. Но программа не отказывает. Кто-либо может объяснить, что вопрос здесь и как я должен преодолеть это??

rLabel является CLabelItem, который я объявил ранее.

Спасибо!

1
задан Izza 8 July 2010 в 07:53
поделиться

2 ответа

Если все, что вы видите - это исключение первого шанса, перестаньте беспокоиться. Смотрите, например, http://blogs.msdn.com/b/davidklinems/archive/2005/07/12/438061.aspx, но вы можете найти подобные страницы повсюду (в основном 5-10 лет назад). Это означает, что какой-то код бросил, и исключение было поймано и обработано. Иногда я вижу это в приложениях MFC. Как написано в блоге

Сообщения об исключениях при первой возможности чаще всего чаще всего не означают, что есть проблема в коде.

Я бы подождал, пока вы увидите реальные ошибки, прежде чем переживать по этому поводу.

1
ответ дан 2 September 2019 в 23:12
поделиться

Я думаю, вам следует проверить, достаточно ли велик буфер, на который указывает pItem->pszText, чтобы вместить rLabel.m_strText. Или если rLabel.m_strText является корректной строкой с нулевым окончанием. Для меня это похоже на запись неинициализированной памяти. Используйте отладчик, чтобы проверить это.

1
ответ дан 2 September 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: