Buffer Zero-Initialization: std::fill vs. memset

Question 38 / 51 Correct so far: 0 (0 answered)

Snippet A

Std Fill

static void zeroBuffer(unsigned char* buf, std::size_t n) {
    std::fill(buf, buf + n, static_cast<unsigned char>(0));
}

alignas(64) static unsigned char buf[kBufSize];

zeroBuffer(buf, kBufSize);
Snippet B

Memset Zero

static void zeroBuffer(unsigned char* buf, std::size_t n) {
    std::memset(buf, 0, n);
}

alignas(64) static unsigned char buf[kBufSize];

zeroBuffer(buf, kBufSize);
Shared test data (shared-setup)
constexpr std::size_t kBufSize = 65536;

Which snippet is faster?

Select the correct answer(s)