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 aap ka 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 jana ek memory leak hai — memory program ki baqi zindagi ke liye reserved rehti hai, kyunke kuch bhi use automatically reclaim nahi karta. Ek hi pointer par free() do baar call karna, ya free karne ke baad ek pointer istemal karna, undefined behavior hai. Ye manual zimmedari hi sabse bari 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 ane wala real compiler error.
Practice exercise
malloc se 3 ints ka ek array allocate karein, unhein 5, 10, 15 set karein, unhein sum karein, total print karein, phir array ko free karein.