3

ページ フォールトを処理する置換アルゴリズムを実装しようとしています。したがって、mallocを使用して循環リンクリストを作成しようとしていますが、次のエラーが表示されます:「pageInMemoryの無効なアプリケーション」sizeof' to incomplete type.followingはコードです:

 typedef  struct {

            int use; 
            int reference;
            int free;
            struct pageInMemory* next;
            } pageInMemory;


            int main()
            {

                int i;
                struct pageInMemory* start, *nn, *temp, *hand;
                start = NULL;

                    for(i=0; i< pNum; i++) 
                    {
                nn = (struct pageInMemory *)malloc(sizeof(struct pageInMemory));
                        nn->use = 0;
                        nn->free = 1;

                        if(start==NULL)
                        {
                            nn->next = nn;
                            start =nn;
                        }

                        else
                        {     // sfhsdifhsdifj sdijfjsd 
                            temp = start;
                            while(temp->next != start)
                            {
                                temp = temp->next; 
                            }

                            temp->next = nn;
                            nn->next = start;
                            start = nn;

                        }   

                    }



                hand = start;
                temp = start;

             while(temp->next != start->next)
             {
                printf("%d\n", temp->use); //hi
             } 


                return 0;// bye
             }  

このようにmallocを使用することは想定されていませんか?

4

3 に答える 3

2

構造体定義を次のように変更します

struct pageInMemory{

            int use;
            int reference;
            int free;
            struct pageInMemory* next;
            };

コードを機能させるために。参考までに、 malloc から来る void* を型キャストしないでください。

于 2013-06-20T10:43:47.540 に答える