You can use a function (e.g., DeleteInstance) that destroys the SomeClass object.
The client code would call DeleteInstance when it is finished using the functions that invoke SomeClass object methods.
I suggest you make PrepareInstance a required initialization function without embedding its use in other functions. The other functions like SomeClass_method can check for a valid SomeClass_instance pointer and return an error if it has not been initialized.