
This defect is part of the open catalog of best practice rules for performance that is automatically detected and reported by Codee.
Issue
A position outside the bounds of the array memory is being accessed which results in undefined behavior most likely causing invalid memory accesses and crashes.
Relevance
An array is essentially a collection of items that can be randomly accessed through an integer index. Obviously, only a subset of the possible integer values will correspond to array element positions; accessing an array using index values outside that subset will access a memory position not associated with any array element. This is called an out-of-memory-bounds access and has undefined behavior in C/C++, most likely causing invalid memory accesses and crashes.
Actions
Fix the array access so that only positions within the array memory bounds are accessed.
Code example
The following code uses an integer index ranging from 1 to 100 to access the array A:
void foo() {
int A[100];
for (int i = 0; i < 100; i++) {
A[i + 1] = 1;
}
}
This is incorrect since the array positions range from 0 to 99. Thus, the array access must be fixed, for instance by changing the array reference from A[i+1] to A[i]:
void foo() {
int A[100];
for (int i = 0; i < 100; i++) {
A[i] = 1;
}
}
Related resources
References
- CWE – CWE-125: Out-of-bounds Read (4.2) [last checked October 2020]
- Index checking – Bounds checking [last checked October 2020]

Building performance into the code from day one with Codee