If managing memory lifetime is an inherently complex problem (which it is), the complexity has to live somewhere.
That somewhere is either in the facilities the language provides, or in user code and manual validation.
If managing memory lifetime is an inherently complex problem (which it is), the complexity has to live somewhere.
That somewhere is either in the facilities the language provides, or in user code and manual validation.