Debug Dssertion Failed!

Debug Dssertion Failed!
2007-09-10T15:32:27+02:00
2007-09-12T09:46:14+02:00
2022-11-05T21:10:41+01:00
poka_jozsef
Visual Studio 2005 Prof. Edition alatt a programom demo változatának futtatása során az alábbi üzenete(ke)t kapom:

Debug Assertion Failed!
Program: ...\sajat.exe
File: C:\program files\microsoft visual studio 8\VC\include\algorithm
line: 2773 (vagy még néhány másik sorszám)

Az üzenet vektor elemeinek rendezésekor jelentkezik:
vector<HRSZ_LISTA_TYP> HrszLi; // .... feltöltve BOOL HrszNovekvo (HRSZ_LISTA_TYP Hrsz1, HRSZ_LISTA_TYP Hrsz2) { int h1= atoi(Hrsz1.hrsz); int h2= atoi(Hrsz2.hrsz); if (h1 > h2) return (FALSE); // csere return (TRUE); // nem kell csere } void Hrszli_rendez (void) { sort (HrszLi.begin(), HrszLi.end(), HrszNovekvo); }

A hibaüzenetet akkor kapom, ha a listában egyenlő elemek is előfordulnak.
A program debug verziója esetén a "sort" meghívja a _Debug_lt_pred függvényt.
A _Debug_lt_pred meghívja a HrszNovekvo függvényt, ami eldönti, jó sorrendben van-e a két vizsgált elem (Hrsz1, Hrsz2)
Ha cserélni kell, a visszatérési érték FALSE. Ilyenkor nincs üzenet.
Ha nem kell cserélni (visszatérési érték TRUE), akkor a _Debug_lt_pred ismét meghívja a HrszNovekvo függvényt úgy, hogy felcseréli a két paramétert. Ha ilyenkor is azt a választ kapja, hogy nem kell csere (TRUE), (mert a két elem sorrendet eldöntő része egyenlő,) akkor jön a Debug Assertion Failed jelezés.
Az nem hiba, hogy vannak egyenlő elemek a vektorban. De a rengeteg figyelmeztető üzenet akadályozza a hibák keresését.

Kérdésem: hogy lehet kikapcsolni ezt az ellenőrzést?
Mutasd a teljes hozzászólást!
Valóban!
A sort nem cserélget, másként rendez, és csak akkor kell TRUE, ha teljesül a < feltétel.
Köszönöm.
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd