Unhandled exception after specifying a larger size for std::array

0

I have code that looks like this:

#include <array>
#include <cstdint>
#include <exception>
#include <iostream>
#include <utility>

template<typename T, size_t size>
auto randomly_populate_array(std::mt19937& gen, T lower, T upper) {
    std::array<T, size> arr;
    std::uniform_int_distribution<T> dist{ lower, upper };
    for (auto& e : arr) { e = dist(gen); }
    return std::move(arr);
}

int main() {
    try {
        std::random_device rd;
        std::mt19937 gen{ rd() };
        constexpr std::size_t arrSize{ 10000 };
        constexpr uint32_t lower = 1, upper = 100;

        std::array<uint32_t, arrSize> A = randomly_populate_array<uint32_t, arrSize>(gen, lower, upper);

    } catch (const std::exception& e) {
        std::cerr << e.what() << std::endl;
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}

And this seems to run fine, I have other code to print samples from this array, except in my full program I'm generating 4 of them of the same size...

Now when I crank up the value from 10,000 to say 20,000, 50,000 or 100,000 as I'm trying to make a profiler class for time performance... Visual Studio wants to throw an unhandled exception... The code compiles and builds, but it is throwing a runtime exception...

Here's the message when I change arrSize to 20,000:

Exception thrown at 0x000000013FB40698 in Simulator.exe: 0xC00000FD: Stack overflow (parameters: 0x0000000000000001, 0x00000000001B3000).
Unhandled exception at 0x000000013FB40698 in Simulator.exe: 0xC00000FD: Stack overflow (parameters: 0x0000000000000001, 0x00000000001B3000).

For the life of me, I can not figure out why... I should be able to create an array with 1,000,000 entries even 100,000,000 on my machine... I have a 64-bit CPU and 8GB of Ram.

And I have already read this Q/A and it doesn't answer or resolve my question... I'm not using dynamic allocation here. And creating 100,000 32-bit values should be fine for my system... that should be 400,000 bytes which is what about 50Kb... so any help into resolving this issue is already appreciated.

c++
limit
unhandled-exception
stdarray
asked on Stack Overflow Jul 23, 2020 by Francis Cugler

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0