いつものように、あなたの時間と助けに感謝します! ここで何が起こっているのかわかりませんが、おそらく明らかなことなので、他の人に見てもらいたいと思いました.
これは私のコードです。今実行すると、指定された名前のノードのアドレスが文字列として検索されます。次に、このノード オブジェクトのアドレスを返します。場合によっては(ほとんど)正常に動作しますが、他の実行ではセグメンテーション違反が発生します。誰でも理由がわかりますか?
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();
}