#include <iostream>
int main()
{
constexpr size_t array_size{1000000000};
int stack[array_size];
std::cout << sizeof(stack);
return 0;
}
一个想法是它可能会被优化。所以我更新了程序如下:
#include <iostream>
int main()
{
constexpr size_t array_size{1000000000};
int stack[array_size];
for(size_t i{0}; i<array_size; i++)
stack[i] = i;
std::cout << sizeof(stack);
return 0;
}
运行时间稍长,然后输出4000000000。
这似乎是触发溢出所必需的:
#include <iostream>
int main()
{
constexpr size_t array_size{1000000000};
int stack[array_size];
stack[0] = 0;
for(size_t i{1}; i<array_size; i++)
stack[i] = stack[i-1] + 1;
std::cout << sizeof(stack) << "\n";
std::cout << "Last element: " << stack[array_size - 1] << "\n";
return 0;
}