c++ delete数组崩溃

C++ delete array crashes

本文关键字:崩溃 数组 delete c++      更新时间:2023-10-16

这是我的代码…

int* getA(int no)
{
   int *a = new int[no];
   return a;
}
void main()
{
   int* a = getA(10);
   delete []a;
}

当我在main中删除数组a时,它崩溃了…原因是什么?

错误是"Windows在Final.exe中触发了一个断点。这可能是由于堆的损坏,这表明Final.exe或它加载的任何dll中存在错误..........."但是我可以在main方法中分配和访问a的元素但是当我试图删除时它会崩溃....

这段代码没有问题。大概是

  1. 它与你的实际代码在一些重要的方面不同,或者
  2. 实际代码中不相关的东西在代码运行之前破坏了堆。

应该可以正常工作(删除)。

如果编译器接受了未定义的行为,应用程序可能会崩溃。尝试以下操作,并在调试器下运行它,以验证它是否在删除时崩溃:

int* getA(int no)
{
   int *a = new int[no];
   return a;
}
int main()
{
  int* a = getA(10);
  delete []a;
  return 0;
}