Cでリンクリスト/構造体に関する質問があります。リンクリストに頂点を追加してデータを挿入しようとしています。 あらかじめnewHeadにメモリを確保していても、アクセス違反はnewHead->name = newVertexName
になるのはなぜですか?コンテキストのC:リンク違反例外の結果となるリンクリストの構造体の初期化
コード:
typedef struct Vertex Vertex;
typedef struct Vertex
{
char name;
Vertex *next;
} Vertex;
struct Vertex* AddVertex(Vertex* head, char newVertexName)
{
Vertex* newHead = malloc(sizeof(Vertex));
newHead->name = newVertexName; // Access violation occuring here
newHead->next = head;
return newHead;
}
int main()
{
char s[100];
const int nNrOfVerts = 27;
Vertex* adjList[28];
for(int i = 0; i <= nNrOfVerts; ++i)
{
adjList[i] = NULL;
}
for(int i = 1; i <= nNrOfVerts; ++i)
{
if(scanf("%s", s) == 1)
{
adjList[i] = AddVertex(adjList[i], s[i-1]);
}
else
{
break;
}
}
return 0;
}
はありがとうございました!
あなたは 'malloc'は、すべての呼び出しを上成功していることを確認しましたか? –
@Scott Hunter正確に検証するのはどういう意味ですか?エラーは、上記のステートメントの最初の実行で発生します... – replax
BTW '[i-1]' - > 's [0]' – BLUEPIXY