12-01-2008, 22:21
|
|
|
חבר מתאריך: 19.06.03
הודעות: 549
|
|
וואו, כמה שאתה עצלן....
אפילו להעתיק משם את הפתרון כמו בנאדם אתה לא מסוגל....
לא נוח לקרוא את הקוד שם כי הוא מיושר לימין וזה מעצבן. אז לא קראתי את הפתרון אבל מה שצריך להיות שם זה בערך כזה דבר:
הטריק בגדול הוא שצריך לשמור איזה מידע שתמיד תדע איך להגיע אליו ומה לחפש שם.
וביחד עם זה אתה צריך להקצות בכפולות של 16.
בעצם יש פה שני טריקים: 1) מה אתה שומר
2) איך אתה מחשב את הגודל שבאמת צריך להקצות.
1) בעצם מספיק לשמור רק ביט אחד שיהיה יסמן לך באיזה פונקציה הקצאת ובאיזה צריך לשחרר - לא מעניין אותך כמה הקצאת. בטח שלא צריך לשמור INT שלם (מינימום של שני בתים!!)
2) איזה גודל צריך להוסיף? אחרי שהבנת שמספיק לך רק בית אחד נוסף לצרכים שלך, אתה מבין שכל מה שצריך זה לעגל את ל 16. ואם זה כבר 16, תוסיף 16.
עכשיו, תבדוק איזה גודל קיבלת, תלך בית אחד אחרוה, תסמן מה שצריך לסמן ותחזיר את הבאפר למשתמש.
הפרי מקבל פוינטר ופשוט בודק אם הערך שלפני הפוינטר....
כ"כ פשוט
|