On 1/9/2013 9:26 AM, Rob T wrote:
You cannot guarantee memory safety with a GC either, depending on the definition
of "memory safety".

GC is a necessary requirement for memory safety, but not sufficient.

For example, you can still access deallocated memory by mistake,

If you're not playing with pointers, then this is a buggy GC.

run out of
memory due to accumulating persistent pointers left around by mistake,

Memory safety does not imply never running out of memory.

or free memory that was not supposed to be freed by mistake.

Then it's a buggy GC.

The GC implementation may
fail due to bugs, deallocating live memory or failing to deallocate inactive
memory.

Of course memory safety presumes a correctly implemented GC.

The only thing a GC can do for you, is free up the programmer from the tedium of
managing memory. It also allows constructs that otherwise would be very
difficult or impractical to implement. The effect can be very positive, but
there are no guarantees of memory safety.

This is incorrect - see above. A bug free GC, and not "cheating" in using it, guarantees memory safety. This is a big deal.

Reply via email to