我有一個指針Particle*
。 我想創建一個矩陣,其中每個單元格包含這個指針之一。 我想:陣列指針陣列
Particle*** particles=(Particle***)malloc(1000);
Particle p0(0,0,0);
particles[0][0]=ps.AddParticle(p0);
但是當我嘗試的最後一個指令我得到一個錯誤,因爲我覺得我的程序會嘗試允許的內存外寫。
對不起,但我其實不太擅長C++。
任何人都可以解釋我怎麼做到這一點?
我有一個指針Particle*
。 我想創建一個矩陣,其中每個單元格包含這個指針之一。 我想:陣列指針陣列
Particle*** particles=(Particle***)malloc(1000);
Particle p0(0,0,0);
particles[0][0]=ps.AddParticle(p0);
但是當我嘗試的最後一個指令我得到一個錯誤,因爲我覺得我的程序會嘗試允許的內存外寫。
對不起,但我其實不太擅長C++。
任何人都可以解釋我怎麼做到這一點?
使用向量代替
#include <vector>
struct Particle
{
Particle(int a_){a=a_;}
int a;
};
using namespace std;
int main()
{
vector<vector<Particle*>> vPart;
int nbLines=5;
int nbColumns=10;
for (int i=0;i<nbLines;++i)
{
vector<Particle*> vTmp(nbColumns,NULL);
vPart.push_back(vTmp);
for (int j=0;j<nbColumns;++j)
{
vPart[i][j]=new Particle(i*nbLines+j);
}
}
return 0;
}
希望幫助,
謝謝,試過這個,但是當我嘗試分配時: vPart [0] [0] = ps.AddParticle(); 我得到這個錯誤: 訪問衝突寫入位置0xcdcdcdcd。 – user1071138
我已經添加了粒子代碼的完整代碼。如果你遵循這種模式,它將起作用。在你的例子中ps是指什麼? – Gabriel
如果你不使用C++這麼好,爲什麼要去最難的方式嗎?首先嚐試STL容器。 –
它誠實地看起來像你想要的(爲了簡單)一個'std :: vector>',或者一個更有效的類來替換雙向量。對於初學者來說,如果'Particle'完全是「C++ ish」,'malloc'就會搞砸了。 –
chris