以下情况:

int** pToPField = new int* [8];


现在,我有一个指向指针字段的指针。每个都指向一个整数,对吗?

现在,我想分配前两个int字段,例如:

*(*(pToPField)) = 1;
*(*(pToPField + 1)) = 2;


或类似:

*(pToPField[0]) = 1;
*(pToPfield[1]) = 2;


该错误始终是核心转储。我的语法有问题吗?我试图从对这个问题的第一个答案中找出答案:How do I use arrays in C++?
我没有运气。

问候

最佳答案

您的语法是正确的,但是您没有为数组中的指针所指向的整数分配任何空间,因此您正在访问无法访问的随机存储器,从而导致分段错误。

例:

pToPField[0] = new int;
pToPField[1] = new int;
// and so on...




考虑改用std::vector

std::vector<int> pToPField(8);

pToPField[0] = 1;
pToPField[1] = 2;
// and so on ...

08-26 19:19