State という構造体があります。
typedef struct State{
char alphabets[2][6];
struct State *PREV; /*this points to the previous state it came from*/
struct State *NEXT; /*this points to the next state in the linked list*/
int cost; /*Number of moves done to get to this position*/
int zero_index;/*this holds the index to the empty postion*/
} State;
これが私の memAllocator() メソッドです:
memAllocator(){
struct State *p = (State*) malloc(sizeof(State));
if (p==NULL){
printf("Malloc for a new position failed");
exit(1);
}
return p;
これが私の主な方法です。
main(){
State *start_state_pointer=memAllocator();
State start_state;
start_state.zero_index=15;
start_state.PREV = NULL;
start_state.alphabets[0][0]='C';
start_state.alphabets[0][1]='A';
start_state.alphabets[0][2]='N';
start_state.alphabets[0][3]='A';
start_state.alphabets[0][4]='M';
start_state.alphabets[0][5]='A';
start_state.alphabets[1][0]='P';
start_state.alphabets[1][1]='A';
start_state.alphabets[1][2]='N';
start_state.alphabets[1][3]='A';
start_state.alphabets[1][4]='L';
start_state.alphabets[1][5]='_';
start_state_pointer=&(start_state);
/*start_state=*start_state_pointer;*/
}
start_state_pointer=&(start_state); というステートメントだと思います。ポインター start_state_pointer を、割り当てたスペースではなく、State start_state 中に作成された少量の一時スペースに割り当てているだけです。しかし、コメントアウトされたステートメント start_state=*start_state_pointer を試して、ポインターを参照し、スペースを開始状態に割り当てようとすると。セグメンテーション違反が発生します。
私はCで始めたばかりです.誰かがこれを手伝ってくれますか?