我的问题如下: 在主要我有一个地方
Shape* ext = NULL;
FieldProbPhys2D* Fprob = NULL;
(...)
createCircleExt(ext, Fprob);
我希望将形状指针指定在main之外(我承认这只是一个没有文本重载主体的问题)。 我有一个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的映射区域内
这是否意味着该分配只是本地的?如果是这种情况,我该如何解决?
非常感谢!
西蒙
答案 0 :(得分:0)
f和field是一个指针。它们被复制到createCircleExt()
的框架中。
在那里,本地副本将被覆盖。如果您离开createCircleExt()
,旧值仍然有效。
可能你想使用指针或引用的指针。