|
|
|
|
|
by loonyphoenix
2530 days ago
|
|
> the GC and runtime make it impossible to leak, double-free, or access out-of-bounds This is false. Neither C# nor Rust protect from memory leaks. There are actually some gotchas in C# that can cause memory leaks - for example, you have to be very careful about events. Memory leaks are not memory unsafe, though. On the topic of actual memory safety - C# has unsafe blocks just like Rust does. Safe Rust is just as safe from memory safety problems as safe C#, even more so, because C# doesn't require unsafe for FFI, where all bets are off. And unsafe C# is just as unsafe as unsafe Rust can be. |
|
In Rust you can leak due to reference cycles for example: https://doc.rust-lang.org/book/ch15-06-reference-cycles.html
C# will clean up reference cycles, but an unintended reference can cause leaks (if you forget to remove it).
In both languages such leaks are not good, but at least they aren't memory safety issues.