I was wondering why accessing elements outside of array bound is allowed when it is clearly mentioned as undefined.
Asked
Active
Viewed 50 times
0
-
6Basically because protecting the developer from themselves isn't always free. If you want runtime protection you can ask for it by using `std::vector::at` but you pay the performance hit of having every access checked. – François Andrieux Sep 14 '20 at 14:45
-
so, is it performance related? – pasha Sep 14 '20 at 14:46
-
3Correct, 100% performance related. Performance is one of the touchstones of C++. – Eljay Sep 14 '20 at 14:46
-
3c++ has a principle of not paying for what you don't need. If it checked every time for out of bounds there would be a non zero time cost to do so. – drescherjm Sep 14 '20 at 14:47
-
Note that compiling your code with (the tremendously expensive) `-fsanitize=undefined` or `-fsanitize=address` *will* result in a process-terminating runtime error. – bitmask Sep 14 '20 at 15:05
-
The issue also has to do with code space. Many embedded systems have limited memory area for code. There is a tradeoff on error checking and code space. – Thomas Matthews Sep 14 '20 at 15:16