一如既往地感谢您的时间和帮助!不知道这里发生了什么,但它可能是明显的,所以我想我会让其他人看看。偶尔的分段错误
这是我的代码。现在运行找到具有指定名称的节点的地址作为字符串。然后返回这个节点对象的地址。有时它可以正常工作(大部分),但其他运行给我一个分段错误。任何人都能看到为什么
class ManipulateArray
{
public:
Node* formArray();
Node* findMemAddress(string);
private:
GetFileInfo g;
};
Node* ManipulateArray::formArray()
{
Node *list = new Node[48];
string null = "*";
for(int i = 0; i<48; i++)
{
for(int j = 0; j<6; j++)
{
string info = g.returnInfo(i,j);
switch(j)
{
case 0:
list[i].setNodeName(info);
break;
case 1:
if(info.compare(null) == 0)
{list[i].getAttachedNode(j) = 0;}
break;
}
}
}
return list;
}
Node* ManipulateArray::findMemAddress(string nodeName)
{
Node* memoryAddress = 0;
Node* temp;
for(int i = 0; i<48; i++)
{
string name = temp[i].getNodeName();
temp = formArray();
if(name.compare(nodeName) == 0)
{
memoryAddress = &temp[i];
break;
}
}
return memoryAddress;
}
int main()
{
ManipulateArray z;
//Node *start;
//Node *finish;
Node* start;
start = z.findMemAddress("F1");
cout << start->getNodeName();
}
这是你的问题:http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope。它不一致的原因是它会导致未定义的行为。 – chris
你能否确定seg故障发生在哪条线上?你有没有访问调试器?你有没有试过对代码行进行评论以查看看起来有什么作用/什么崩溃? –
是的,我有。问题出在findMemAddress()中,当我在main中调用它的时候会导致这个问题。 – TheNodeCommode