15-10-2008, 08:37
|
|
|
|
חבר מתאריך: 08.10.02
הודעות: 827
|
|
קוד:
int f(T *p, int i) {
if ((p == NULL) || (i < 0)) return INVALID_ARG;
...
}
קבעת שהכתובת היא חוקית (שתשתמש בה) ולכן אתה לא אמור לבצע את הבדיקה הזאת
אלא רק את הבדיקה של i .
קוד:
if (p == p2+sizeof(T))
המקרה הזה לדעתי יתפקד נכון, בגלל שהמשפט:
null pointer, is guaranteed to compare
unequal to a pointer to any object or function.
הם אומרים זאת בגלל שהאופרטור & בחיים לא יחזיר NULL,
ולכן אין מצב שתקבל את הערך NULL בלי הצבה ידנית למצביע.
הקומפילר לא עוצר אותך לעשות
קוד:
unsigned char *c = 1; c--;
*c = 5;
המערכת הפעלה עוצרת אותך, אבל מקרים שאתה דיברת עליהם שום דבר לא יעצור אותך, לא?
_____________________________________
Error: Keyboard not found
Press F1 to continue
נערך לאחרונה ע"י maind בתאריך 15-10-2008 בשעה 08:40.
|