![]() |
למה כשאני מקצה בצורה רגילה - לא מצליח. ודינמית - כן.
אני עובד בשפת C.
כשאני מקצה מערך גדול מאוד (מאות אלפי תאים של int) בצורה רגילה - זה לא יוצא, זה נתקע בזמן הרצה (נגמר הזיכרון? או שיש הסבר אחר?). אבל כשאני מקצה אותו מערך (כמובן שזה אותו הגודל) בהקצאה דינמית זה כן יוצא. משהו יכול להסביר לי איך זה קורה? תודה רבה |
כנראה שבאמת נגמר המקום.. תנסה לחכות אולי תקבל סטאק אובר פלו.
|
לא מצאתי שום דבר מעניין בעמוד.
אוי מחר אני מגיש את הפרויקט במחשבים ואני עדיין לא יודע איך להסביר את זה.... אבל אני זוכר שאיפשהו שמעתי שאם מקצה רגיל מערך זה שומר את המידע ברצף בזיכרון (זה בטוח) ובהקצאה דינמית הוא שומר את זה איפה שיש מקום (הוא יכול לחלק ולשמור חלק מהנתונים במקומים מוסימים וחלק אחר מהנתונים במקום אחר). זה נכון? |
במערך הדינאמי אתה ממלא את כל התאים?
ההסבר היחיד שאני מוצא זה , שכשאתה מצהיר על מערך רגיל , אין לו מאות אלפים של תאים להקצות לך ברצף בשביל המערך במערך דינאמי הוא לא מקצה ברצף כי הוא דינאמי אז אין לו פה בעייה כנראה... |
בהקצאת סטטית המערך נשמר במחסנית, כנראה שזה לא overflow כי הקצאת את הגודל המדוייק של המערך, פשוט נגמר המקום במחסנית, היא לא מקום גדול במיוחד.
הקצאה דינמית לעומת זאת נשמרת בערימה, זה מקום יותר דינמי שמתרחב אם נגמר בו המקום, דברים גדולים תשמור שם. |
כל הזמנים הם GMT +2. הזמן כעת הוא 09:32. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ