好吧,所以我决定做一个WinAPI应用程序,该应用程序在一个圆上绘制模块化乘法,如果乘法器在0到0.1之间(不包括边界),它将崩溃。调试时,会弹出一个错误消息框,提示“调试断言失败!”。和“按重试以调试应用程序”。
(由于我喜欢1个代表点,因此我无法发布图片,但是this is the error message box)
当我单击“重试”时,它总是在if else
语句处中断执行,因此不会显示任何有用的信息。 if else
中评估的内容无关紧要,但是应该将类型FLOAT
转换为CHAR *
,然后将CHAR *
转换为{{1 }}。这是(显然)失败的代码的一部分:
WCHAR *
执行会在此时中断,但由于可能与图形本身有关,因此我包括了在圆上绘制模块化乘法的循环(尽管对我而言似乎不错):
if (useFloat == FALSE)
_gcvt_s(buff, 7, (multiplier / 100.0f), 4); // multiplier is type size_t (ull)
else // This is where the breakpoint is set.
_gcvt_s(buff, 7, fMultiplier, 4); // fMultiplier is type FLOAT
mbstowcs_s(NULL, text, 7, buff, 7);
是的,我完全不知道为什么会这样,我在MSDN,SO和Reddit上阅读了大量的线程,但对于为什么会发生这种情况我仍然一无所知。