זקוק להסבר

זקוק להסבר

שלום לכולם, מבקש לקבל הסבר קצר על malloc /realloc ב-C טיפה על ההבדלים ואופן השימוש המקובל בכל אחד מהם. תודה מראש על כל תשובה.
 

tami120

New member
malloc , realloc

malloc הפונק' מקצה בלוק בזכרון -מערכת ההפעלה מאתרת מקום פנוי ומחזירה את כתובת תחילת הבלוק כטיפוס *void אם הפונק' לא מצליחה להקצות מקום היא מחזירה NULL . *void - מציין שמדובר בכתובת לטיפוס כלשהו ולכן צריך לבצע המרה לטיפוס הרצוי למשל *float realloc הפונק' משנה את גודל בלוק בזכרון אשר הוקצא קודם לכן ע"י malloc בצורה דינמית (אי אפשר לשנות גודל של מערך קבוע למשל [arr[20) אם קיים בזכרון מספיק מקום כדי להרחיב את הבלוק אז הזכרון הנוסף מוקצה בהמשך לאותו בלוק ואם לא נמצא מספיק מקום כדי להרחיב את הבלוק הנוכחי בלוק חדש מוקצה במקום אחר בגודל הרצוי והבלוק הישן מועתק לחדש ,הבלוק הישן משתחרר והפונק' מחזירה מצביע לבלוק החדש. אם אין מספיק מקום בזכרון -מחזירה NULL דרך אגב הפונק' realloc גורמת לתוקרה רבה (מציאת מקום והעתקת הבלוק הישן -במקרה ולא נמצא מקום בהמשך לבלוק) מקווה שהבנת
 

tami120

New member
re

malloc: ( void* malloc(size_t size unsigned int- size_t לדוגמא:
*ptr=(float*)malloc(n*sizeof(float))​
realloc: ( void* malloc(size_t num,size_t size
*ptr=(float*)realloc(ptr,n*sizeof(float))​
 

tami120

New member
אופס -בלי *

malloc: void* malloc(size_t size( unsigned int- size_t לדוגמא: ptr=(float*)malloc(n*sizeof(float)) realloc: void* malloc(void* p,size_t size) ptr=(float*)realloc(ptr,n*sizeof(float))
 
למעלה