测试 Project.exe 已触发断点

Test Project.exe has triggered a breakpoint

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

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 时,您正在丢失指向第二个字符串的原始指针,并试图两次删除第一个字符串。很可能是这个 double-delete 导致了断点错误。

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