So if I understand well, Garbage collection automatically deallocates objects that are not used by the program anymore. like the garbage collector in java.
I hear in languages like C that don't support garbage collection the programs can have memory leaks and subsequently exhaust the memory.
So what are the errors that programmer make in languages like C that don't support garbage collection? I would guess not deallocating objects after they're not used anymore. But are these the only errors that we can make because of the lack of a garbage collector?
Dellocating things you need
Not deallocating things you no longer need (because you're not tracking allocations/use/frees well)
Re-allocating new instances of things that already exist (a side-effect of not tracking properly)
De-allocating something you've already freed
De-allocating something that doesn't exist (a null pointer)
There are probably more. The point is: managing memory is tricky, and is best dealt with using some sort of tracking mechanism and allocating/freeing abstraction. As such, you might as well have that built into your language, so it can make it nice and easy for you. Manual memory management isn't the end of the world -- it's certainly doable -- but these days, unless you're writing real-time code, hardware drivers, or (maybe, possibly) the ultra-optimised core code of the latest game, then manual effort isn't worth it, except as an academic exercise.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With