וִידֵאוֹ: האם אתה צריך malloc ב-C++?
2024 מְחַבֵּר: Lynn Donovan | [email protected]. שונה לאחרונה: 2023-12-15 23:47
אתה להשתמש malloc מתי אתה צריך להקצות חפצים ש צריך קיים מעבר לכל החיים של ביצוע הבלוק הנוכחי (כאשר עותק בהחזרה היה יהיה יקר גם כן), או אם אתה צריך להקצות זיכרון גדול מהגודל של אותה מחסנית (כלומר: מערך מחסנית מקומי של 3MB הוא רעיון גרוע).
כמו כן, האם אתה צריך malloc ב-C++?
ההבדל הוא פשוט: malloc מקצה זיכרון, בעוד ש-new מקצה זיכרון וקורא לבנאי האובייקט אתה מקצה זיכרון עבור. אז, אלא אם כן אתה מוגבל ל-C, אתה צריך לעולם אל תשתמש malloc , במיוחד כאשר עוסקים C++ חפצים.
אפשר גם לשאול, מה הטעם במאלוק? ב-C, פונקציית הספרייה malloc משמש להקצאת גוש זיכרון בערימה. התוכנית ניגשת לגוש הזיכרון הזה באמצעות מצביע ש malloc החזרות. כאשר הזיכרון אינו נחוץ יותר, המצביע מועבר ל-free אשר מחלק את הזיכרון כך שניתן יהיה להשתמש בו למטרות אחרות.
באופן זה, האם יש malloc ב-C++?
המאלוק () פונקציה ב C++ מקצה א בלוק של זיכרון לא מאותחל והחזרות א מצביע ריק ל ה בייט ראשון של ה מוקצה בלוק זיכרון אם ה ההקצאה מצליחה. אם ה הגודל הוא אפס, ה הערך המוחזר תלוי ב ה הטמעה של ה סִפְרִיָה. זה יכול להיות או לא א מצביע אפס.
איך מייצרים מבנה?
בשביל מה שאתה רוצה אתה צריך שניים malloc () ש. struct וקטור *y = malloc (גודל של *y); /* שימו לב למצביע */ y->x = calloc(10, sizeof *y->x); בשורה הראשונה, אתה מקצה זיכרון לאובייקט וקטור. malloc () מחזיר מצביע לזיכרון שהוקצה, אז y חייב להיות מצביע וקטור.