我有一个像这样的功能:
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/