פורסם 2004 בנובמבר 2221 שנים http://members.lycos.co.uk/moroses/Uploads/StackInt/StackInt.htmאשמח אם תומרו לי מה דעתכם על המימוש למחסנית שעשיתי ;D
פורסם 2004 בנובמבר 2221 שנים לא משהו.קודם כל אתה מוגבל ל-10 איברים.ואם כבר החלטת על הגבלה לפחות תדאג שלא תעבור אותה בפונקציה push.אחת הבעיות הכי גדולות באבטחה של תוכנה היא buffer overflow שזה מצב שאתה עובר את גודל הבאפר שלך ומתחיל לכתוב למקום בזיכרון שלא שלך.
פורסם 2004 בנובמבר 2221 שנים מחבר אתה יכול להיות יותר ספציפי?כי אני עשיתי בדיקה לא לעבור את ההגבלה שיש if(p->index==STACKINT_SIZE-1) return;ולא הבנתי איפו יש סכנה buffer overflowוההגבלה היא על 100תודה על התגובה המהירה ;D
פורסם 2004 בנובמבר 2221 שנים אוקיי באמת הגנת מ-buffer overflow, טעות שלי :-Xהבעיה היחידה עם הקוד שלך שהוא מוגבל ל-100 והוא פשוט ביזבוז גדול של זיכרון במידה ואתה רוצה מחסנית קטנה.יותר יפה ונכון לממש מחסנית עם רשימה מקושרת.
פורסם 2004 בנובמבר 2221 שנים מחבר אם אני עושה את זה אם רשימה מקושרת אז אני מתחיל אם האיבר הראשוןאז אני צריך לעבור עד לאחרון או יש דרך מהירה להגיעה לתא האחרון?
פורסם 2004 בנובמבר 2221 שנים לא ממש...כל הרעיון במימוש של מחסנית עם רשימה מקושרת זה שאתה מכניס ומוציא איברים מראש הרשימהאתה צריך להחזיק מצביע לתחילת הרשימהבהכנסה של איבר - המצביע הגלובלי יציביע לאיבר הזה והוא יצביע למצביע הגלובלי הישן.בהוצאה של איבר - המצביע הגלובלי יצביע לאיבר השני ותחזיר את האיבר הראשון.
פורסם 2004 בנובמבר 2321 שנים מחבר שיפרתי את הקוד והעברתי אותו לרשימה מקושרת אני יודע שאין בדיקה על הערך של הMALLOCאבל חוץ מזה אני חושב שזה בסדרhttp://members.lycos.co.uk/moroses/Uploads/Stack/Stack.htmאשמח לקבל תגובות טובות ורעות(מקווה שאין הרבה :-\)
פורסם 2004 בנובמבר 2321 שנים בפונקציה SL_push יש שיכפול קוד, כל ההפרדה למקרים מיותרתמספיק לעשותvoid SL_push(StackList *S,value_type V) { struct Stack *T=NULL; T=MALLOC; T->next=S->Top; T->value=V; S->Top=T;}חוץ מזה הכל נראה בסדר (לא הרצתי את את זה)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.