在外部函数中指定指针

时间:2012-03-11 10:29:37

标签: function pointers segmentation-fault

我的问题如下: 在主要我有一个地方

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的映射区域内

这是否意味着该分配只是本地的?如果是这种情况,我该如何解决?

非常感谢!

西蒙

1 个答案:

答案 0 :(得分:0)

f和field是一个指针。它们被复制到createCircleExt()的框架中。 在那里,本地副本将被覆盖。如果您离开createCircleExt(),旧值仍然有效。

可能你想使用指针或引用的指针。