Clamping `malloc(0)` to `malloc(1)` means that allocations of 0-size
types will no longer be free, which is sad. It's very useful to be able
to have meet the requirement of having a trait object and avoid any
memory allocation if there's no state.

The sentinel does work, but adds a branch to *every* free call. It will
not optimize out even for cases where the size is fixed at compile time.
This isn't a significant issue for the default allocator because it will
be complex, but it's a significant issue with a bump/arena allocator, or
a simple free list. It's less overhead than not having a size available
will be, but why not kill two birds with one stone?

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to