5.1.14 · D1 · HinglishC Programming

FoundationsDynamic memory — malloc, calloc, realloc, free

2,047 words9 min read↑ Read in English

5.1.14 · D1 · Coding › C Programming › Dynamic memory — malloc, calloc, realloc, free

Ek bhi line jaise int *a = malloc(n * sizeof(*a)); padhne se pehle, tumhe uska har ek piece khud se samajhna hoga. Chalte hain ek-ek cheez banate hain, ek ke upar ek. Yahan kuch bhi assume nahi kiya gaya — agar parent ne kuch use kiya, toh hum use yahan define karte hain.


1. A byte — memory ka atom

Picture: socho ek street pe identical mailboxes ki katar khadi hain. Har mailbox ek byte hai. Har ek ek chhoti value rakh sakta hai.

Figure — Dynamic memory — malloc, calloc, realloc, free

Topic ko yeh kyun chahiye: parent mein har function — malloc, calloc, reallocbytes mein kaam karta hai. Jab tum malloc(20) likhte ho, tum keh rahe ho "mujhe 20 aisi boxes ek katar mein do." Jab tak tum nahi jaante byte hai kya, tum "mujhe kitne bytes chahiye?" nahi samajh sakte.


2. An address — byte ka house number

Picture: upar wali figure mein har mailbox ke neeche likha number. Mailbox byte hai; uske neeche wala number address hai.

Topic ko yeh kyun chahiye: malloc ek address return karta hai — tumhare naye block ke pehle byte ka address. Woh returned number hi tumhara tumhari memory se ek-maatra connection hai.


3. A pointer — ek variable jo address store karta hai

Picture: ek arrow. Pointer apne box mein baitha hai; ek plain number ki jagah woh ek arrow rakhta hai jo us box tak pahunchta hai jise woh name karta hai.

Figure — Dynamic memory — malloc, calloc, realloc, free

C mein pointer ka type star ke saath likhte hain:

Topic ko yeh kyun chahiye: malloc ek address return karta hai; tumhe use kahin store karna hoga rakhne ke liye. Woh kahin ek pointer hai. Zyada detail Pointers in C mein hai.


4. A type aur uski size — ek cheez kitni wide hoti hai?

Picture: ek int ek mailbox nahi hai, yeh adjacent mailboxes ka ek group hai (commonly 4) jo ek bade number ko rakhne ke liye saath pakde hain. Ek char usually bas 1 box hota hai.

Figure — Dynamic memory — malloc, calloc, realloc, free

Topic sizeof(*p) kyun likhta hai: *p ka matlab hai "woh cheez jise p point karta hai," toh sizeof(*p) hai "ek element ki size." Agar baad mein p ka type badlo, yeh line automatically sahi sawaal poochti rahegi.


5. An array — same-type boxes ki katar, aur pointers se iska relation

Picture: wahi mailbox street, lekin ab 5 equal int-wide cells mein grouped, index 0 se 4 tak labelled.

Topic ko yeh kyun chahiye: dynamic memory ka poora point hi yeh hai ki ek aisa array banao jiska length tumhe runtime tak pata nahi tha. Tumhe malloc se ek address milta hai, use pointer mein store karte ho, aur a[i] ko exactly ek real array ki tarah use karte ho.


6. Stack vs heap — memory ke do neighbourhoods

Picture: memory street ke do alag regions. Stack boxes automatically clean up ho jaate hain jab tum ek room chhod ke jaate ho; heap boxes tab tak rented rehte hain jab tak tum khud key wapas nahi karte.

Figure — Dynamic memory — malloc, calloc, realloc, free

7. NULL — woh address jo kuch point nahi karta

Picture: ek pointer arrow jo edge se baahar empty space mein point kar raha hai — jaanboojhkar kahin nahi.


8. void * aur casting — ek generic, typeless address

Picture: wahi arrow pehle jaisa, lekin ab koi label nahi yeh batane ke liye ki woh kis type ke box par land ho raha hai — ek blank tag.


9. Memory leaks — rented boxes kabhi wapas nahi liye

Picture: ek arrow (tumhara ek-maatra pointer) overwrite ho jaata hai, jabki jis box ko woh name karta tha woh float karta chala jaata hai, ab bhi "in use" marked, koi arrow usse nahi pahunchta.

Topic ko yeh kyun chahiye: yahi woh danger hai free ke peeche, v = realloc(v, ...) ke peeche, aur p = NULL set karne ke peeche. Leaks pakadne ke tools Memory Leaks and Valgrind mein hain.


Yeh topic ko kaise feed karte hain

byte

address

pointer

type and sizeof

how many bytes

array via pointer

stack vs heap

why malloc exists

NULL

failure check

void pointer

Dynamic memory malloc calloc realloc free

memory leak


Equipment checklist

Self-test: right side cover karo aur jawab do.

Byte kya hai?
Memory ki sabse chhoti addressable unit — ek box jo 0–255 tak value rakhta hai.
Address kya hai?
Ek number jo memory mein ek byte ki position ko name karta hai, jaise ek house number.
Pointer kya hai?
Ek variable jiska value ek address hota hai — woh kisi doosre box ko point karta hai.
* ke do uses ka kya matlab hai?
Declaration int *a mein iska matlab "pointer" hai; expression *a mein iska matlab "dereference — pointed-at value fetch karo."
sizeof(*p) kya compute karta hai?
Un bytes ki sankhya jo p jis ek element ko point karta hai usme hain.
"n objects of type T" ko bytes mein convert karo.
bytes = n × sizeof(T), yaani n * sizeof(*p).
Stack aur heap memory mein kya fark hai?
Stack automatic hai (function return pe free); heap manual hai (tum khud free karte ho).
NULL kya hai aur malloc use kab return karta hai?
Ek guaranteed-invalid pointer matlab "kuch nahi"; malloc use tab return karta hai jab woh request satisfy nahi kar sakta.
void * kya hai aur malloc ek kyun return karta hai?
Ek typeless address; malloc raw bytes mein deal karta hai aur tumhara type nahi jaanta.
Memory leak kya hai?
Heap memory jise tum free nahi kar sakte kyunki tumne uske har pointer kho diye.