Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
282 / 281 / 108
Регистрация: 04.09.2010
Сообщений: 638
1

Debug assertion failed

03.10.2016, 14:18. Просмотров 736. Ответов 2
Метки нет (Все метки)

Я в с++ делаю первые шаги, так-что прошу сильно не пинать
При вызове этой функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int qwerty(CComQIPtr <IBody2> pBody)
{
    CComQIPtr <IFace2> face;
    pBody->IGetFirstFace(&face);
    if(!face)return 1;
    while (face)
    {
        long tess_count=0;
        face->GetTessTriangleCount(&tess_count);
        CComVariant vTessArr;
        face->GetTessTriangles(VARIANT_TRUE,&vTessArr);
        if(NULL == vTessArr.pparray)return 1;
 
        cout << tess_count << endl;
 
        CComQIPtr <IFace2> nextface;
        face->IGetNextFace(&nextface);
        face.Release();
        face=nextface;
        nextface.Release();
    }
}
выскакивает исключение
Debug assertion failed

в altcomcli.h указывает на деструктор
C++
1
2
3
4
5
6
    ~CComVariant() throw()
    {
        HRESULT hr = Clear();
        ATLASSERT(SUCCEEDED(hr));// На эту строку, hr - память заблокирована
        (hr);
    }
Исключение выскакивает в каждой итерации цикла while.
Видимо, нужно как-то очистить память, выделенную под vTessArr.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2016, 14:18
Ответы с готовыми решениями:

Debug assertion failed
#include &lt;iostream&gt; using namespace std; class Employee { friend class Leader; private: char...

Debug Assertion Failed
Создавал небольшой генератор ролей для персонажа и натолкнулся на проблему пиктрелейтед. До...

Debug assertion failed
Здравствуйте! Есть 2 двусвязных списка. Нужно написать метод merge который эти списки соединяет....

Debug assertion failed!
пишу библиотеку функции для работы с массивом. В функции вставки со сдвигом возникает ошибка при...

2
537 / 345 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
03.10.2016, 14:38 2
ATLASSERT бросает исключение, если у неё не истина в скобках.
SUCCEEDED проверяет hr и там не ok. Пока все логично за исключением расстрельного пункта с исключением в деструкторе.
Вот это не удалось:
C++
1
HRESULT hr = Clear();
Добавлено через 4 минуты
C++
1
~CComVariant() throw()
Заголовок включает throw(). Кто же воткнул ATLASSERT?
0
282 / 281 / 108
Регистрация: 04.09.2010
Сообщений: 638
03.10.2016, 15:21  [ТС] 3
если в конце цикла while добавить
C++
1
vTessArr=NULL;
то в этой функции ошибка пропадает
Зато вылазит при выходе из вызывающей функции (с отсылом в то-же место в altcomcli.h)
В вызывающей функции тоже есть объект типа CComVariant. Если и ему присвоить NULL, то ошибка остается, но указывает на другое место в altcomcli.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Implementation
private:
    void ClearThrow() ATLVARIANT_THROW()
    {
        HRESULT hr = Clear();
        ATLASSERT(SUCCEEDED(hr));
        (hr);
#ifndef _ATL_NO_VARIANT_THROW
        if (FAILED(hr))
        {
            AtlThrow(hr);
        }
#endif
    }
Как правильно очистить CComVariant?

Добавлено через 36 минут
У CComVariant есть свойство pparray, унаследованное от tagVARIANT и представляющее собой, насколько я понял, SAFEARRAY. Ему тоже надо присвоить NULL
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2016, 15:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Debug Assertion Failed
Ошибка. Не могу понять что не так. Как я понял с дебагера, проблема во втором освобождении памяти....

Debug Assertion Failed!
Доброго времени суток! Не могу понять где ошибка, подскажите пожалуйста. код: #include...

Debug assertion failed
Во время отладки вылазит такая ошибка,не могу понять в чём дело

Debug assertion failed
Подскажите кто-нибудь, почему ругается? // test.cpp: определяет точку входа для консольного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.