2012-03-11 59 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(),旧值仍然有效。

也许你想使用指向指针或引用的指针。