我有一个像这样的功能:

void QuadTree::alloc( Quad***& pQuadsArray ) {
    const int _quadsCount = 100;

    // allocates memory as one chunk of memory
    Quad** _data = new Quad*[_quadsCount * _quadsCount];
    pQuadsArray = new Quad**[_quadsCount];
    for( int i = 0; i < _quadsCount; ++i ) {
            pQuadsArray[i] = _data + i * _quadsCount;
    }
}

// calling like this:
Quad*** test = nullptr;
alloc( test );

它运作良好。但这不是,我也不知道为什么:
void QuadTree::alloc( Quad**** pQuadsArray ) {
    const int _quadsCount = 100;

    // allocates memory as one chunk of memory
    Quad** _data = new Quad*[_quadsCount * _quadsCount];
    *pQuadsArray = new Quad**[_quadsCount];
    for( int i = 0; i < _quadsCount; ++i ) {
            *pQuadsArray[i] = _data + i * _quadsCount; // code crashes here
            // tried *(pQuadsArray[i]) but it didn't help
    }
}

// calling like this:
Quad*** test = nullptr;
alloc( &test );

怎么了

最佳答案

您有运算符优先级问题-更改:

        *pQuadsArray[i] = _data + i * _quadsCount; // code crashes here

至:
        (*pQuadsArray)[i] = _data + i * _quadsCount;

关于c++ - 如何在函数中分配2D数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16679086/

10-11 18:51