We need the crashing information. Does the window just close? Does it exit with a certain code? Any messages given?
The only other thing I may be able to offer is that it MAY have to do with the parameter you are putting into the function for drugStoreItems array pointer (obviously needing to make sure that you are passing a drug store with 2 items).
Also, something small, but if you just output a-1 to the display for what number you are on, it saves you from having to make 2 additional calculations for each loop (and looks a little cleaner), but to each his own.
I have had a similar issue before. -> is a member access operator, but it is used in place of a pointer member access operator or something like that (from what I remember from a text book). Just a period is basically for a member reference.
Do you think it may be that myDrugStore is a pointer, and not an array of pointers? Because then the -> SHOULD only work on the base element (being the address of the actual pointer defined?).
Because if you declared a pointer to an array, you are basically pointing to the one address location where it begins, which is essentially the address of the first element in that array: the base address or base element.