开发者

C++ delete array crashes

开发者 https://www.devze.com 2023-04-09 22:14 出处:网络
This is my code... int* getA(int no) { int *a = new int[no]; return a; } void main() { int* a = getA(10); delete []a;

This is my code...

int* getA(int no)
{
   int *a = new int[no];
   return a;
}

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

When I delete the array a in main it crashes... what is the reason??

The error is "Windows has triggered 开发者_运维知识库a breakpoint in Final.exe. This may be due to a corruption of the heap, which indicates a bug in Final.exe or any of the DLLs it has loaded..........." But I am able to assign and access the elements of a in the main method but when I try to delete it is crashing....


Nothing wrong with this code. Presumably either

  1. It differs from your real code in some significant way, or
  2. Something unrelated in your real code is corrupting the heap before this code runs.


It should just work (the delete).

Possibly, the application crashes because of undefined behaviour, if your compiler accepted that code. Try the following, and run it under a debugger to verify that it crashes in the delete:

int* getA(int no)
{
   int *a = new int[no];
   return a;
}

int main()
{
  int* a = getA(10);
  delete []a;

  return 0;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号