שאלה קצרה בcpp

James Devlin

New member
שאלה קצרה בcpp

אני מדבג קובץ CPP דרך Matlab וקצת קשה להבין את השגיאות שעולות.

אני מקבל exception בקוד הבא:


for (int i=0;i<2;i++){
pOffset=new int*[M];
pWinSize = new int*[M];}

for (int j=0; j<M; j++) {
for(int i=0;i<2;i++) {
pOffset[j]=NULL;
pWinSize[j]=NULL;
}
}


כאשר בקובץ הh המשתנים מוגדרים כ:

int **pOffset[2];
int **pWinSize[2];


התכנית עפה בשורה pWinSize[j]=NULL כאשר j=2, i=0 .בגלל שזה רץ דרך מאטלב, אז אני לא יכול לראות בדיוק איזה exception נזרק. אני חושב שמדובר ב segmentation fault.

בכל אופן, אני לא רואה שום דבר בעייתי בקוד שלי. אני ניגש הפוך לאינדקסים אולי? ניסיתי להגדיר את המשתנים כך שבעצם מקבלים pWinSize[M][2] zzz, הגדרתי את זה הפוך אולי?

אני לא מצליח להבין את הטעות שלי. מישהו יכול לעזור?

תודה מראש!!
 

James Devlin

New member
הבנתי, תודה רבה! שאלה קטנה נוספת-

נניח שהגדרתי בקובץ h את המשתנה כint **pOffset[2]; zzz , יש משהו שאני יכול לעשות על מנת שהאינדקס הראשון ירוץ מ0 עד M?

כלומר, שבכל זאת יתקיים pOffset[M][2] zzz ?
 

James Devlin

New member
הבנתי, תודה רבה! שאלה קטנה נוספת-

נניח שהגדרתי בקובץ h את המשתנה כint **pOffset[2]; zzz , יש משהו שאני יכול לעשות על מנת שהאינדקס הראשון ירוץ מ0 עד M?

כלומר, שבכל זאת יתקיים pOffset[M][2] zzz ?


תודה מראש!
 

selalerer

New member
אתה יכול לעבוד עם ***int ולהקצות דינמית מערך

של **int בגודל M ואז לכל אחד מהם להקצות מערך של *int בגודל 2.

זה הופך להיות מסובך ומכוער דיי מהר.

אני חייב להודות שהפתרון היחיד שאני מכיר (לבלאגן) הוא לעבור לתכנת Object Oriented. אני מניח שהצליחו לכתוב תוכנות מסודרות גם לפני זה, אבל אני לא ממש יודע איך לנהל תוכנה אחרת.
 
למעלה