在C ++中声明向量时,大小参数溢出

时间:2014-10-13 21:53:06

标签: c++ vector overflow

int n = INT_MAX;
vector<int> v (n*n);

这会导致长度为n ^ 2的向量v还是会发生溢出?

2 个答案:

答案 0 :(得分:0)

vector::max_size()定义的矢量大小有限制,你高于它。

有关尺寸类型的固有限制,请参阅此exising贡献。

答案 1 :(得分:0)

你可以尝试

std::vector<int> v(std::numeric_limits<unsigned long>::max());

std::vector<int> v(std::numeric_limits<unsigned long long>::max());

虽然无法保证您的平台可以为int数组分配内存,但该数组足以容纳那么多项目。