ההבדל בין Malloc לבין New ההבדל בין

Anonim

Malloc נגד חדש

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

-> ->

ההבדלים הבסיסיים בין השניים הם כי malloc קיים ב- C שפת בעוד חדשה היא תכונה מסוימת של C + + שפה. Malloc היא גם פונקציה (אשר, עבור מתכנתים, דורש קצת זמן לבצע) בעוד חדש הוא תוכנית המפעיל (אשר חותך את זמן הביצוע). זה יתרון של מפעיל חדש, כי מתכנתים עושה בזמן אמת תכנות יש צורך לבחור את השיטה המהירה ביותר לשימוש.

המפעיל החדש הוא סוג בטוח, שלא כמו פונקציה malloc.

פונקציה malloc היא פונקציית ספריה עבור שפת C. כל מה שהוא עושה זה להקצות זיכרון ולהחזיר את המצביע אליו. מצד שני, המפעיל החדש הוא מבנה ברמת השפה, ותפקידו ליצור אובייקט על ידי הקצאת זיכרון וקורא לבנאים המתאימים. הבדל נוסף של פונקציה malloc מהמפעיל החדש הוא כי malloc דורש typecasting במהלך ההכרזה בעוד לשעבר לא. כמו כן, פונקציה malloc משתמש במילה "חינם" כדי לנקות את הזיכרון בעוד "למחוק" משמש מפעיל חדש למטרה דומה.

לשניים יש גם דרכים שונות להתמודד עם כישלון תשישות זיכרון. אם הפונקציה malloc נכשלת, היא חוזרת עם מצביע NULL. אופרטור חדש אף פעם לא מחזיר מצביע NULL אלא מציין את הכישלון על ידי זריקת חריג במקום זאת. זה יתרון למפעיל חדש מאז מתכנת המחשב לא צריך לבדוק את המצביע חזר בכל פעם שהוא קורא חדש ולא מתכנת מחשבים יחמיץ כזה חריג.

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

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

מפעיל חדש יש למנף מעל פונקציה malloc על ידי החזרת סוג הנתונים המדויק תוך הפונקציה מחזירה חלל *. פונקציה malloc גם לא ניתן לעומס לעומת מפעיל חדש שבו עומס אפשרי. תכונה נוספת של מפעיל חדש הוא שיש פחות סיכוי לעשות טעויות עם המפעיל לעומת פונקציה malloc. זה נחשב פלוס עבור מתכנתים במיוחד אם הם כותבים קודים רבים או עובד על קוד על לוח זמנים צפוף. פונקציה malloc וחופשי ניתן להשתמש ב- C + +, אבל זה לא ניתן להשתמש ישירות. מומלץ להשתמש חדש ומחק במקום.

סיכום:

1. Malloc היא פונקציה בעוד חדש הוא מפעיל.

2. חדש הוא תכונה ספציפית של שפת ++ C ואילו malloc משמש את שפת C.

3. מפעיל חדש הבא עם "למחוק" בעוד malloc פונקציה הולך עם "חינם. "

4. פונקציה malloc היא פונקציית הספרייה עבור שפת C, בעוד שהמפעיל החדש הוא מבנה ברמת השפה משפת ++ C.