Dynamic Memory
Is site ka har doosra course ya to automatically memory reclaim karne wala ek garbage collector rakhta hai (Python, JavaScript, TypeScript, Java), ya deterministically ye karne wala ek compiler-enforced ownership system (Rust), ya C++ ka RAII convention jo object lifetime se bandha hai. C mein ye kuch bhi nahi hai: malloc(size) heap se raw memory ka ek block request karta hai, aur jab tak aap use explicitly free() nahi karte, wo aapka hi rehta hai.
#include <stdio.h>
#include <stdlib.h>
int main() {
int *numbers = malloc(3 * sizeof(int));
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
int sum = numbers[0] + numbers[1] + numbers[2];
printf("%d\n", sum);
free(numbers);
return 0;
}60
free() call karna bhool jaana ek memory leak hai — memory program ki baaki zindagi ke liye reserved rehti hai, kyunki kuch bhi use automatically reclaim nahi karta. Ek hi pointer par free() do baar call karna, ya free karne ke baad ek pointer use karna, undefined behavior hai. Ye manual responsibility hi sabse badi cheez hai jo C ko is site ki har doosri language se alag karti hai.
Aage: structs aur pointers — pichli do lessons ko combine karna, aur . aur -> mix up karne par aane wala real compiler error.
Practice exercise
malloc se 3 ints ka ek array allocate karo, unhe 5, 10, 15 set karo, unhe sum karo, total print karo, phir array ko free karo.