相关疑难解决方法(0)

C++参数的值在std :: vector中的堆栈帧之间发生变化

我遇到了一个非常奇怪的错误,我希望有人可以解释.我有一个简单的std::vector<V3x>,在哪里V3x是一个3d矢量(线性代数种类.)以下代码导致std::length_error抛出异常:

std::vector<V3x> vertices;
int vertexCount = computeVertexCount();
vertices.resize(vertexCount); // throws std::length_error
Run Code Online (Sandbox Code Playgroud)

我已经验证了computeVertexCount()返回的值35远远低于vector::max_size()此值,所以它无法要求太多的内存.

我将异常追溯到std::vector以下两个函数的定义中.

void resize(size_type _Newsize, _Ty _Val)
    {   // determine new length, padding with _Val elements as needed
    if (size() < _Newsize)
        // NOTE: here, _Newsize - size() = 35
        _Insert_n(end(), _Newsize - size(), _Val); 
    else if (_Newsize < size())
        erase(begin() + _Newsize, end());
    }

void _Insert_n(const_iterator _Where,
    size_type _Count, const _Ty& _Val)
    {   // …
Run Code Online (Sandbox Code Playgroud)

c++ memory debugging parameters vector

4
推荐指数
1
解决办法
3080
查看次数

标签 统计

c++ ×1

debugging ×1

memory ×1

parameters ×1

vector ×1