Difficulty: Easy
Correct Answer: ss will be created on the stack.
Explanation:
Introduction / Context:
This item examines how value-type variables (struct instances) and reference-type fields within them are allocated. It is crucial to distinguish between the struct variable itself and any object that a reference field might point to.
Given Data / Assumptions:
Concept / Approach:
A struct variable declared as a local typically lives in the stack frame. The reference field z is just a reference (like a pointer) stored within the struct; unless initialized with new Trial(), it remains null and points to no object. Any Trial instance would be a reference type and lives on the heap when created. The important distinction: creating the struct does not automatically create an instance of Trial.
Step-by-Step Solution:
Verification / Alternative check:
Using ss within another class field changes storage: if a struct is a field within a heap object, the struct data lives inside that heap object. The type category (value vs reference) still remains unchanged.
Why Other Options Are Wrong:
Common Pitfalls:
Assuming that fields of a struct are separately heap-allocated or that creating a struct automatically creates referenced objects.
Final Answer:
ss will be created on the stack.
Discussion & Comments