Difficulty: Easy
Correct Answer: A reference is stored on stack.
Explanation:
Introduction / Context:
The standard treats references as aliases, not objects with mandatory storage. However, at the implementation level, where and how a reference is represented depends on the context (local variable, data member, temporary binding). This question uses common multiple-choice phrasing and expects the most plausible placement among the offered options.
Given Data / Assumptions:
Concept / Approach:
Conceptually, a reference is just another name; it does not have independent storage requirements in the abstract machine. Practically, a local reference binding (e.g., 'int &r = x;') is represented in the function's activation record along with other locals—i.e., on the stack—on conventional architectures. If a reference is a data member, its representation is within the object's storage. Among the provided options, 'stack' most closely matches typical local usage.
Step-by-Step Solution:
1) Identify the scenario implied by MCQs: local references.2) Map to typical storage: locals live on the stack frame.3) Note that references can be optimized away; still, 'stack' is the best of the given choices.4) Select 'A reference is stored on stack.'
Verification / Alternative check:
Inspect compiler output with optimizations off; you may observe a slot allocated for the reference binding in the stack frame. With optimization, the reference may be elided entirely.
Why Other Options Are Wrong:
Heap: used for dynamic allocation via new; references are not allocated with new by themselves.Queue / Binary tree: data structures, not storage segments.
Common Pitfalls:
Believing references always occupy storage or never do. The standard allows elision; compilers choose representations. For MCQ purposes, 'stack' fits ordinary local references.
Final Answer:
A reference is stored on stack.
Discussion & Comments