פורסם 2011 בינואר 214 שנים יש לי בעיה בזמן ריצהפתאום הקומפיילר (VS 2010) נותן לי את ההודעה המוכרת של בעיה בזמן ריצה (עם ה break וה continue) ופותח לי ב VS קובץ ASM שמתחיל ככה: page ,132 title chkstk - C stack checking routine;***;chkstk.asm - C stack checking routine;; Copyright © Microsoft Corporation. All rights reserved.;;Purpose:; Provides support for automatic stack checking in C procedures; when stack checking is enabled.;;*******************************************************************************אני לא יודע מה יכל לגרום לזהאבל הדבר היחיד שנראה לי חריג הוא שהקצאתי מערך של INT בגודל שתי מליוןint arr[2000001],זה אמור להיות חריגה מגודל ההקצאה המותר?אם כן איך יכולתי לדעת את זה בלי לשאול פה? (להבא, כדי לא להטריד סתם)אריה
פורסם 2011 בינואר 214 שנים מערכים סטטיים מוקצים על גבי המחסנית, שהיא מאוד מוגבלת בגודלה. הגודל הספציפי המותר כנראה משתנה מקומפיילר לקומפיילר, וייתכן שאפילו משתנה מתוכנית לתוכנית.בכל מקרה, מערכים גדולים מומלץ להקצות באופן דינמי (ע"י new/malloc).
פורסם 2011 בינואר 214 שנים בתור hack פשוט, אפשר גם להקצות מערכים גלובליים גדולים מאוד (וכן מערכים סטטים בתוך פונקציות).void f(){ char a[100*1024*1024]; // 100MB is probably too big for the stack!}void g(){ static char a[100*1024*1024]; // static and global arrays don't sit on the stack, so they can be big}
פורסם 2011 בינואר 214 שנים לפי דעתי בדרך כלל אם הגעת למצב שאתה צריך מערך כל כך גדול אז משהו שגוי בתכנון שלךלאיזה מטרה אתה צריך מערך כזה ?
פורסם 2011 בינואר 214 שנים מה הבעיה במערכים גדולים? נניח, אם הוא רוצה לטעון קובץ שלם לזכרון?(2 מגה זה לא כל כך הרבה סך הכל)
פורסם 2011 בינואר 214 שנים מחבר תודה אני אנסה את הפתרונותאני מבין שהקצאת זיכרון דינאמית (NEW) אמורה לפתור את הבעיה?לגבי השאלה איך הגעתי לזה:http://projecteuler.net/index.php?section=problems&id=11אני חושב שזמן ריצה הרבה יותר חשוב לי מזכרון...כמובן שאם אתה מעדיף תוכנות שרצות יותר לאט אבל תופסות מעט זיכרון זו זכותך...שבוע טוב,אריה
פורסם 2011 בינואר 214 שנים אני מבין שהקצאת זיכרון דינאמית (NEW) אמורה לפתור את הבעיה?אכן.אגב, לדעתי בפרוייקט אוילר יותר נוח לעבוד בשפת תכנות שזמן הפיתוח בה יותר מהיר - לדוגמה פייתון. אין טעם להשקיע שעתיים בכתיבת פתרון לבעיה מסויימת ב-++C, כשאפשר לבצע את אותו הדבר בפייתון בחצי שעה.
פורסם 2011 בינואר 214 שנים יש לי בעיה בזמן ריצהפתאום הקומפיילר (VS 2010) נותן לי את ההודעה המוכרת של בעיה בזמן ריצה (עם ה break וה continue) ופותח לי ב VS קובץ ASM שמתחיל ככה:תעבוד עם std::vector ולא עם מערכים. ככה כל הצרות האלה יחסכו והפתרון מוכן וזמין וסטנדרטי (והוא מקצה דינמית באופן אוטומטי)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.