متاسفانه مطالب سایت مذکور اشتباهه
گفته متغیرهای محلی در heap قرار می گیرند که اشتباهه
خودمون هم می تونیم تست کنیم آدرس متغیر ها را می گیریم ببینیم کجا هستند
#include <stdio.h>
#include <stdlib.h>
int global;
int calcSize(int input)
{
int a = input;
int b = a *5;
printf("Address of local variable \"a\" in \"calcSize\" is %p\n", &a);
printf("Address of local variable \"b\" in \"calcSize\" is %p\n", &b);
return b;
}
int main ()
{
int local = 5;
void *p = malloc(128);
printf ("Address of main is %p\n", main);
printf ("Address of global is %p\n", &global);
printf ("Address of local is %p\n", &local);
printf ("Address of p is %p\n", p);
int size = calcSize(10);
return 0;
}
همون طور که مشاهده می کنید متغیر p که آدرس موجود در heap را نشون میده و متغیرهای a و b در stack قرار گرفته اند همون طور که local در stack قرار گرفته
لطفا این pdf را مطالعه کنید که همین مطلب را توضیح داده
malloc برای برنامه های زبان c استفاده می شه همون new استفاده ازش راحت تره و بهتره
با تابع free هم میشه حافظه ای که با malloc اشغال شده آزاد کرد
اینکه مثلا با دابل کلیک یک برنامه چه اتفاقی می افته مثلا در لینوکس می تونید این مطلب را مطالعه کنید
http://dbp-consulting.com/tutorials/...amStartup.html
سال خوبی داشته باشید