
- بواسطة x32x01 ||
ايه الفرق بين Local Variable و Global Variable في ال Memory؟
هنتكلم عن حاجة مهمة لكل مبرمج وهي الفرق بين Local Variable و Global Variable وإزاي بيأثروا على طريقة التخزين في RAM 
كمان هنعرف هل الـVariable Static بيغير حاجة ولا لأ

تذكير سريع عن الـMemory
* الـPrimitive Data Types غالبًا بتتخزن في Stack* الـNon-Primitive Data Types (Reference Types) بتتخزن في Heap
* بس الـPrimitive Data Types ممكن تكون Local وممكن Global
السؤال: هل طريقة التخزين هتفرق بين Local و Global؟

الإجابة: ايوة، وهنوضح ده بالتفصيل
Local Variable في ال Stack
خلينا ندي مثال عملي: Java:
public void add (int numberOne , int numberTwo ){
int sum = numberOne + numberTwo ;
Calculator cal = new Calculator () ;
}
- هيعمل "صندوق" اسمه add
- هيخزن جواه References للـFunction بس، والكود نفسه في مكان تاني في RAM
- هيخزن المتغيرات numberOne, numberTwo, sum
- هيخزن Object من Calculator في الـHeap ويخزن Reference ليه جوا الصندوق
يعني ببساطة: الـPrimitive Data Types لو Local → بتتخزن في Stack لأنها مرتبطة بالـFunction مش بالـClass
Global Variable في ال Heap
لو الـPrimitive Data Type عبارة عن Global Variable:- مش مرتبطة بأي Function، لكنها مرتبطة بالـClass بشكل عام
- أي Object بيتعمل من الـClass ده بيكون الـGlobal Variable جواه → بيتخزن في Heap
- الـHeap بيخزن كل محتويات الـObject بما فيها الـGlobal Variables
الـStatic Variables
#$ مكان تخزين الـStatic Variable بيتحدد حسب ارتباطه:- لو مرتبط بالـFunction → بيتخزن في Stack
- لو مرتبط بالـClass → بيتخزن في Heap
الخلاصة
- Local Primitive → Stack
- Global Primitive → Heap
- Non-Primitive → Heap
- Static Variable → حسب ارتباطه بالClass أو Function

التعديل الأخير: