测试项目.exe触发了断点

Test Project.exe has triggered a breakpoint

本文关键字:断点 项目 exe 测试      更新时间:2023-10-16

当我运行代码时,它给了我一个错误,我触发了一个断点。 它没有告诉我这个断点在哪里。 谁能帮忙?

void memLeak()
{
    int *p = new int;
    char * string1 = new char[20];
    char * string2 = new char[25];
    strcpy(string1, "Sheldon");
    string2 = string1;
    delete string2;
    delete string1;
    delete p;
}
int main(int argc, char* argv[])
{
    memLeak();
    _CrtDumpMemoryLeaks();
    return 0;
}
  • 使用 new 时,请使用 delete
  • 使用 new[] 时,请使用 delete[]

即,数组有两者的单独版本。

delete[] string2;
delete[] string1;
delete p;
  • 当您分配string2 = string1 时,您将丢失指向第二个字符串的原始指针,并尝试删除第一个字符串两次。可能是这种双重删除导致了断点错误。

但更好的是,使用 std::string ,不要担心自己直接使用 new/delete