将指针的引用分配给变量时,我遇到了一些奇怪的问题:本地代码可以正常工作,但是会在其他地方导致内存访问错误:

//This works fine
Gridcell* g = model.gc;
cout << g->LC_updated << " " << g << endl;

//When I include this, the program crashes elsewhere
//But output from this line is OK
Gridcell gc = *g;
cout << "Var:" << gc.LC_updated << &gc << endl;

(Gridcell是一个类,没有no-args构造函数)
我不是C++专家,这是一个相当大的外部库,但是我不明白为什么分配给本地范围的变量会在其他地方引起问题。谁能对此有所启发?

最佳答案

您需要确保Gridcell具有正确的副本构造函数。仅当Gridcell手动管理资源时才需要这样做,这种情况几乎永远不会发生。如果是这样,您将需要The Big Three

如果需要更多特定帮助,请发布Gridcell的类定义以及构造函数和析构函数(如果有)。

如果您不想复制,则可以使用引用:

Gridcell & gc = *g;
cout << "Var:" << gc.LC_updated << &gc << endl;

用法相同,但不会创建副本。

关于c++ - 在C++中将指针值分配给变量的副作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5324404/

10-14 01:41