Windows已在myprogram.exe中触发了断点

时间:2014-09-09 11:46:39

标签: c++ visual-studio-2008 types

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

1 个答案:

答案 0 :(得分:1)

sizeof中缺少一颗星:

memset(a,0,a_size*sizeof(*a));

那是因为:

sizeof(a) == sizeof(int*)  -- usually 4 or 8
sizeof(*a) == sizeof(int)  -- usually 4