Windows已在中触发断点myprogram.exe
。这可能是由于堆损坏导致的,这表明堆中的错误myprogram.exe
或它已加载的任何DLL。这也可能是由于用户在projtest.exe
聚焦时按下F12 。输出窗口可能包含更多诊断信息。
工作代码:
void main()
{
const unsigned char a_size = 15;
int *a = new int[a_size];
memset(a,0,a_size*sizeof(a));
delete [] a;
}
错误代码:
void main()
{
const unsigned char a_size = 15;
char *a = new char[a_size];
memset(a,0,a_size*sizeof(a));
>delete [] a;
}
'>'
是断点位置。
因此,动态数组中的char类型会导致错误。
附加信息:使用Visual Studio C ++ 2008
在sizeof范围内缺少一颗星:
memset(a,0,a_size*sizeof(*a));
那是因为:
sizeof(a) == sizeof(int*) -- usually 4 or 8
sizeof(*a) == sizeof(int) -- usually 4
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句