C++ error: terminate called after throwing an instance of ‘std::bad_alloc’

This code has 3 holes:


First hole: int numEntries. Later you do: ++numEntries;

You increment unspecified value. Not sure if it’s UB, but still bad.


Second and third hole:

const int length = numEntries;
int* arr = new int[length];

And

const int size = numEntries;
int matrix[size];

numEntries has unspecified value (first hole). You use it to initialize length and size – that is Undefined Behaviour. But let’s assume it is just some big number – you allocate memory of unspecified size (possibly just very big size), hence the std::bad_alloc exception – it means you want to allocate more memory that you have available.

Also, matrix is VLA of unspecified size, which is both non-standard and Undefined behaviour.

Leave a Comment