The professor's question asks for a scenario where a shallow copy of an array causes a fault. A violation of the Rule of 3/5/0 is such a scenerio.
In short, the Rule of 3 states that if a class implements a copy constructor, a copy assignment operator, or a destructor, it likely needs all 3. The Rule of 5 extends this to include the move constructor and move assignment operator.
In a deep copy scenario, each object would own its own array in memory. The copy constructor and copy assignment operator would make a full copy of the source object's current array. The destructor would free that copy. Any modifications made by an object to its own array would not affect any other objects.
In a shallow copy scenario, each object would share pointers to a single array in memory. The copy constructor and copy assignment operator would copy the source object's pointer to the array. Modifications to the array would affect all objects pointing at that array. The problem is when there is no clear definition for which object owns the array. If all of those objects think they own the array, theor destructors will all try to free the same memory multiple times, which is undefined behavior that can corrupt memory, cause crashes, etc. But if none of them assume ownership, the array will be leaked once they have all been destroyed.