2012-03-11 85 views
0

我的問題分配指針如下: 主我有地方在外部功能

Shape* ext = NULL; 
FieldProbPhys2D* Fprob = NULL; 
(...) 
createCircleExt(ext, Fprob); 

,我想形狀指針分配外的主(我承認這只是一個沒有問題有一個文本重載的主)。 我有一個Utility.h及其相應Utility.cpp(其中createCircleExt定義):

void createCircleExt(Shape* f, FieldProbPhys2D* field) { 
(...) 
f = new Circle(r, r, r); 
(...) 
field = new FieldProbPhys2D(Nx, Ny, 2*r, 2*r, Vg); 

}

當我運行此我得到一個分段錯誤和Valgrind的告訴我:不能訪問內映射地址爲0x0的地區

這是否意味着分配只是本地的?如果是這樣的話,我該如何解決它?

非常感謝!

Simon Simon

回答

0

f和field是指針。它們被複制到createCircleExt()的框架中。 在那裏,本地副本將被覆蓋。如果您離開createCircleExt(),舊值仍然有效。

也許你想使用指向指針或引用的指針。