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
答案 0 :(得分:1)
sizeof中缺少一颗星:
memset(a,0,a_size*sizeof(*a));
那是因为:
sizeof(a) == sizeof(int*) -- usually 4 or 8
sizeof(*a) == sizeof(int) -- usually 4