TRT
Sign in
easyFoundationsdebugging

What happens when an index runs past the end of an array?

Describe the memory effect of an out of bounds access and the tools that catch it early.

TRT practice prompt — not a verified question from a named employer.

The Runtime Theory Team2 min read
Learn it firstOut-of-Bounds Access and Undefined BehaviorSee what happens in memory when an index leaves its array, learn what undefined behavior means and why compilers may exploit it, and use warnings and sanitizers to catch these bugs.

A strong answer

A strong candidate frames What happens when an index runs past the end of an array? around the exact memory layout, compiler semantics, and hardware execution model covered in Out-of-Bounds Access and Undefined Behavior. Describe the memory effect of an out of bounds access and the tools that catch it early.

Step 4 of the last lesson read an element that did not exist, and nothing complained. In Python or Java the same mistake raises an exception at once. In C++ the program carries on. Take the smallest possible example, an array of three elements and a write to index 3:

What does this do? The honest answer is "anything", and the language has a precise name for that: undefined behavior. This lesson explains what it means, why C++ allows it, and how to find it before it finds you.

In a production interview, always connect the specification rule to its concrete runtime consequence: state what lives on the stack versus the heap or static storage segment, how the compiler or operating system validates alignments, lifetimes, and error codes, and what happens under adversarial or boundary inputs (such as zero-length buffers, integer overflow, concurrent mutation, or partial I/O). Backing your explanation with a small trace of register/memory state transitions immediately separates senior systems engineers from candidates who only memorized syntax.

What the interviewer is listening for

  • Mastery of core invariant: Explain what happens in memory when an index goes past the end of an array.
  • Mastery of core invariant: Define undefined behavior and distinguish it from implementation-defined behavior.
  • Mastery of core invariant: Explain why a program that triggers undefined behavior can change under optimization.
  • Hardware and ABI awareness: Explaining how sizes, alignments, calling conventions, or kernel boundaries behave on real 64-bit targets rather than relying on implementation-defined assumptions.
  • Defensive engineering: Naming the exact compiler flags (-Wall -Wextra -Werror), static analyzers, or runtime sanitizers (-fsanitize=address,undefined,thread) that verify correctness in CI.

Common mistakes

  • Explaining only surface syntax without tracing the underlying memory addresses, ownership lifetime, or kernel/user-space state transitions.
  • Assuming undefined behavior (such as signed overflow, uninitialized reads, strict-aliasing violations, or dangling pointers) will "just work" because it passed an unoptimized -O0 debug build.
  • Ignoring return codes, partial reads/writes, alignment padding, or cleanup paths when an allocation or syscall fails midway through a function.

This answer walks

Practice follow-ups

  1. 01Why can the same bug vanish in one build and crash in another?

Not started

Sign in to save your learning progress.

Sign in to save