נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: מערכים

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
איתמר93
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 26 March 2010
משתמש: מנותק/ת
הודעות: 15
נשלח בתאריך: 14 April 2010 בשעה 21:34 | IP רשוּם
ציטוט איתמר93

שלום
רציתי לדעת האם אפשר לגרום למערך לגדול במהלך הרצת התוכנית
המטרה לעשות את זה יעיל ולחסוך בזיכרון


תודה
חזרה לתחילת העמוד הצג את כרטיס החבר של איתמר93 חפש הודעות אחרות של איתמר93
 
inHaze
משתמש פעיל
משתמש פעיל
סמל אישי

הצטרף / הצטרפה: 23 November 2006
מדינה: Israel
משתמש: מנותק/ת
הודעות: 119
נשלח בתאריך: 14 April 2010 בשעה 22:30 | IP רשוּם
ציטוט inHaze

כן, זה אפשרי ונקרא הקצאה דינמית של זיכרון.
בשפת c אתה יכול להשתמש בפונקציות malloc (משמשת להקצאה דינמית) ובפונקציה realloc (משמשת לשינוי גודל בלוק זיכרון שהוקצה).
מבחינת יעילות, עדיף להקצות מראש מספיק מקום ולא להוסיף במהלך ריצת התכנית כי פעולה זו היא יקרה יחסית מבחינת זמן ומשאבים.


__________________
הבלוג שלי
חזרה לתחילת העמוד הצג את כרטיס החבר של inHaze חפש הודעות אחרות של inHaze
 
טלי
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 27 April 2010 בשעה 21:25 | IP רשוּם
ציטוט טלי

ואיך בשפת גאווה?
חזרה לתחילת העמוד הצג את כרטיס החבר של טלי חפש הודעות אחרות של טלי בקר בדף הבית של טלי
 
אוריה
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 29 January 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 230
נשלח בתאריך: 27 April 2010 בשעה 22:16 | IP רשוּם
ציטוט אוריה

יש גם ReDim של VB .net שבברירת המחדל מוחק את כל המערך ואם מוסיפים Preserve לא מוחק:
קוד:

Dim arr (3) As Integer
ReDim Preserve arr(4) 'שומר את שלושת התאים הראשונים ומוסיף עוד אחד
ReDim Preserve arr(2) 'מוחק את התא השלישי



__________________
SmartProgramming
נא לא להגיב בשבת על מה שאני כותב

עדיף להשקיע עוד שעה בתיעוד, מלאבד עוד 100 שעות ויותר על שיחזר של כל הפרוייקט מההתחלה..
חזרה לתחילת העמוד הצג את כרטיס החבר של אוריה חפש הודעות אחרות של אוריה בקר בדף הבית של אוריה
 
אחד שיודע
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 03 April 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 13
נשלח בתאריך: 28 April 2010 בשעה 11:18 | IP רשוּם
ציטוט אחד שיודע

טלי כתב:
ואיך בשפת גאווה?

בג'אווה המתכנת לא נוגע בזכרון, אם יש צורך להגדיל מערך, מקצים מערך חדש.
ומאפשרים לGC לשחרר את הזכרון שהוקצה המערך הקודם.

חזרה לתחילת העמוד הצג את כרטיס החבר של אחד שיודע חפש הודעות אחרות של אחד שיודע
 
חיימקה
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 18 April 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 243
נשלח בתאריך: 29 April 2010 בשעה 16:05 | IP רשוּם
ציטוט חיימקה

בס"ד

ב c#, לא מקצים מערך חדש, אלא משתמשים ב ArrayList, שהוא מערך בעל יכולת להשתנות, וישנן שיטות להוספת איבר (Add) ולמחיקתו (Remove). אני מניח שישנו דבר כזה גם ב Java. (נסה לחפש מילים נרדפות ל Array ול List...)

(אגב: גם ב ArrayList, בעצם נוצר מערך חדש והקודם נמחק. כך גם ב realloc. אלא שהמערכת עושה זאת והעבודה אינה מוטלת על המתכנת.)



__________________
אין יאוש בעולם כלל!
חזרה לתחילת העמוד הצג את כרטיס החבר של חיימקה חפש הודעות אחרות של חיימקה
 
אוריה
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 29 January 2010
מדינה: Israel
משתמש: מנותק/ת
הודעות: 230
נשלח בתאריך: 29 April 2010 בשעה 18:11 | IP רשוּם
ציטוט אוריה

סתם לידע כללי - ArrayList(וכל המחלקות של List) הם בזבזני ביצועים ועושים אותו דבר כמו מה שהפונקציות להגדלת מערכים עושות, רק בכל פעם שאתה עושה Add(יש אפילו מסמך (גם) על זה פה בספריה).
אבל זה טוב אם לא ממש אכפת מהביצועים.


__________________
SmartProgramming
נא לא להגיב בשבת על מה שאני כותב

עדיף להשקיע עוד שעה בתיעוד, מלאבד עוד 100 שעות ויותר על שיחזר של כל הפרוייקט מההתחלה..
חזרה לתחילת העמוד הצג את כרטיס החבר של אוריה חפש הודעות אחרות של אוריה בקר בדף הבית של אוריה
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה