user570593
user570593

Reputation: 3520

C++ delete array crashes

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....

Upvotes: 3

Views: 1590

Answers (2)

sehe
sehe

Reputation: 393769

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;
}

Upvotes: 1

Ernest Friedman-Hill
Ernest Friedman-Hill

Reputation: 81724

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.

Upvotes: 3

Related Questions