Buffer Allocation: Heap Buffer vs Stack Buffer

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

Snippet A

Heap Buffer

void processBuffer(int seed) {
    auto buf = std::make_unique<std::uint8_t[]>(kBufSize);
    for (std::size_t i = 0; i < kBufSize; ++i)
        buf[i] = static_cast<std::uint8_t>((seed + i) & 0xFF);
    benchmark::DoNotOptimize(buf[kBufSize - 1]);
}

processBuffer(kSeed);
Snippet B

Stack Buffer

void processBuffer(int seed) {
    std::uint8_t buf[kBufSize];
    for (std::size_t i = 0; i < kBufSize; ++i)
        buf[i] = static_cast<std::uint8_t>((seed + i) & 0xFF);
    benchmark::DoNotOptimize(buf[kBufSize - 1]);
}

processBuffer(kSeed);
Shared test data (shared-setup)
constexpr std::size_t kBufSize = 256;
constexpr int         kSeed    = 42;

Which snippet is faster?

Select the correct answer(s)