For loop with an array

First, as marcadian pointed out, the array a is not initialized, so values in the array are completely random.

Also, the size of the a array is 5, meaning that you can access between indexes 0 and 4 inclusive.

However, in your loop, you try to access at index -1, and index 6. Attempting to write and read at invalid indexes ( such as -1 and 6, in this case ) is undefinded behavior ( it can crash with a segmentation fault, or corrupt other variables, which can make debugging process very hard … )

A way to avoid buffer overrun like you did is to use std::array STL container, like this :

std::array<int, 5> a;
//Access elements using the method 'at()', it has bound checking
a.at(0); // 0 is a valid index
//a.at(-1); // -1 is not a valid index, it will crash ( at least in debug mode )
//a.at(6); // 6 is also not a valid index

The std::array STL container does the same things normal array does, but provides useful methods

Leave a Comment