שאלה ב- c

crunch

New member
שאלה ב- c

כתבתי תוכנית ב- c (ב- Turbo c++ 3.0 אם זה משנה) במודל זיכרון medium. עכשיו הגעתי למסקנה שחלק גדול מהבעיות בתוכנית שלי נגרמות מחוסר זכרון אז ניסיתי לשנות את מודל הזכרון ל huge, אבל עכשיו התוכנית נתקעת וקורסת (בצורות חדשות ומפתיעות..). לפי מה שקראתי בעזרה, במודל huge משתמשים במצביעים מסוג far, שאני לא השתמשתי בהם. השאלה שלי היא האם אני חייב להפוך את כל המצביעים ל farוהאם להשתמש ב farmalloc או שאפשר להשתמש עדיין ב malloc??
 

galh

New member
בכמה זכרון אתה משתמש בדיוק?

יש בעיה להשתמש במודל Huge תחת חלונות (דרך חלון DOS) מאחר ואין תמיכה כל כך טובה בזכרון (היו שני סוגים EMS ועוד אחד, 10 שנים, לך תזכור). אני לא יודע מה כתבת, אבל אני מניח שעבודה במודל small צריכה להספיק.
 

crunch

New member
האמת שאני לא לגמרי בטוח כמה זכרון

אני בדיוק צריך. אני משתמש במודל large ויש שלב שבו הקצאת הזכרון מחזירה NULL, כלומר נכשלת. אני מניח שאני יכול לנסות לעבוד במודל large ולהקצות זכרון בעזרת far..
 

galh

New member
תנסה להעריך את הכמות

תעשה sizeof של מבנה הנתונים שאתה מקצה באופן דינמי ותכפיל אותו במספר הפעמים שאתה מקצה אותו. אני מתכנת כבר כמה שנים טובות ומעולם לא נתקלתי במושג הזה של far. אני מניח שאתה מתכנת ל- DOS ולא ל- Windows או Linux ("מוד מוגן") ובגלל זה הבעיה. אבל שוב, אני ממש לא בטוח שאתה צריך יותר מחצי מגה זכרון, כך שחבל לך לבזבז זמן על ניסיונות לעבוד במודל Large שהוא שריד מתקופה של לפני ה- 386.
 

crunch

New member
אבל הזכרון נגמר..

כשאני עובד במודל large, ככה שאני חייב לעשות *משהו*.. טוב, אני אחשוב על זה. תודה!
 
למעלה