Stack և Heap

malloc(), free() ֆունկցիաները։ Ծրագրի հիշողության սեգմենտները

Stack-ը հիշողության տարածք է՝ ֆունկցիայի կանչի մասին տեղեկատվությունը և local փոփոխականները պահելու համար: Դա ստրուկտուրային, Last In, First Out(LIFO) տվյալների կառուցվածք է: Օգտագործվում է ֆունկցիաների կանչերի կառավարման և local փոփոխականների պահելու համար, ֆիքսված չափերով: Heap հիշողության տարածք է դինամիկ հիշողության տեղաբաշխման համար: Դա ավելի քիչ ստրուկտուրային, ավելի ճկուն տվյալների կառուցվածք է: Օգտագործվում է դինամիկ չափերով տվյալներ պահելու համար, որոնք գործում են ֆունկցիայի scope-ից դուրս: malloc()-ը C գրադարանային ֆունկցիա է heap-ում հիշողություն հատկացնելու համար: Որպես արգումենտ հիշողության չափը և վերադարձնում է ցուցիչ հատկացված հիշողության վրա: Օրինակ՝
int *ptr = (int *)malloc(10 * sizeof(int));
free() ֆունկցիան վերցնում է մեկ արգումենտ, ցուցիչ որը հղվում է դինամիկորեն հատկացված հիշողության սկիզբը:Կարևոր է նշել, որ երբ դուք կանչեք free(), pointer-ը այլևս վավեր չէ և այն օգտագործելը հանգեցնում է undefined behavior-ի: