• timhh@programming.dev
    link
    fedilink
    arrow-up
    1
    arrow-down
    1
    ·
    7 hours ago

    but calling malloc_usable_size(malloc(1)) is giving me 24, so it at least allocated 24 bytes for my 1, plus any tracking overhead

    Indeed. Padding exists. A bool is still one byte.

    it’ll get 3+ extra bytes added on the next fn call.

    …of padding. Jesus. Are you going to claim that uint16_t is not 2 bytes because it is sometimes followed by padding?

      • timhh@programming.dev
        link
        fedilink
        arrow-up
        1
        arrow-down
        1
        ·
        2 hours ago

        It is not. A bool in C, C++, Rust, Go, and every language that I know is 1 byte. Why are you arguing this basic very well known fact so much?

        Just say “oh I was mistaken, TIL”. It’s not shameful.

        • brian@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          2 hours ago

          because with things that the compiler does, like padding for alignment, it frequently takes up more space than that. that was my argument the whole time. what til are you talking about? I’m talking about an extra layer you’ve decided doesn’t count. ofc sizeof bool will be a byte in all of those languages.

          a bool taking up a single byte is a fantasy that those languages use because developers generally don’t need to think about all the other stuff going on.