هایپر سورس

مرجع کاربردی برنامه نویسان ایـــرانی

حافظه های هیپ به زبان ساده به همراه مثال


به غیر ازData ,  Code , Stack , محل دیگری هم برای تخصیص حافظه بکار می رود که به آنHeap  می گوییم. وقتی که توسط دستوراتی مثل malloc یا alloc یا ... حافظه ای را از سیستم میگیریم , این حافظه در هیپ سیستم اختصاص داده میشود.در واقع از هیپ برای تخصیص حافظه به صورت دینامیک استفاده میشود.
این نکته هم باید ذکر شود که در هر برنامه ای لزوما هیپ نداریم و وجود آن بستگی دارد به زبانی که برای برنامه نویسی استفاده شده است.
به طور استاندارد دو نوع هیپ برای برنامه در نظر گرفته میشود که عبارتند از :

Near Heap و Far Heap

اندازه Near heap محدود به 32 کیلوبایت است و برای رفع محدودیت از Far heap

استفاده میشود و تفاوت آنها در نحوه آدرس دهی است.
طرف حساب ما متغیرهای نوع دینامیک هستند که در پشته سیستم ادرس دهی میشوند

هیپ,حافظه هیپ,Heap,تفاوت حافظه های هیپ با stack,stack,حافظه stack,use Heap,malloc

 در زیر مثالی از دونوع برنامه به زبان C اورده ایم که در مثال اول نحوه ذخیره متغیر در Stack و در مثال دوم نحوه استفاده و ذخیره در Heap بیان شده است

//On Stack
#include <stdio.h>

double multiplyByTwo (double input) {
  double twice = input * 2.0;
  return twice;
}

int main (int argc, char *argv[])
{
  int age = 30;
  double HsValue = 12345.67;
  double myList[3] = {1.2, 2.3, 3.4};

  printf("double your salary is %.3f\n", multiplyByTwo(salary));

  return 0;
}


//Result : double your salary is 24691.340


2- Heap
//on heap

#include <stdio.h>
#include <stdlib.h>

double *multiplyByTwo (double *input) {
  double *twice = malloc(sizeof(double));
  *twice = *input * 2.0;
  return twice;
}

int main (int argc, char *argv[])
{
  int *age = malloc(sizeof(int));
  *age = 30;
  double *salary = malloc(sizeof(double));
  *salary = 12345.67;
  double *myList = malloc(3 * sizeof(double));
  myList[0] = 1.2;
  myList[1] = 2.3;
  myList[2] = 3.4;

  double *twiceSalary = multiplyByTwo(salary);

  printf("double your salary is %.3f\n", *twiceSalary);

  free(age);
  free(salary);
  free(myList);
  free(twiceSalary);

  return 0;
}



cleocin cream cleocin cream cleocin ovuli

نوع پرداخت :

چگونه میتوانم این محصول را با تخفیف دریافت نمایم ؟

  • 1) اگر عضو سایت باشید، 5% تخفیف در محصول اعمال میشود (برای اعمال شدن این مورد میبایست وارد حساب کاربری خود شوید)
  • 2) اگر موجودی حساب شما بالاتر از 1,000 تومان باشد، 10% تخفیف بر روی محصول اعمال خواهد شد (این مبلغ برای این محصول میباشد)
  • 3) در صورتی که در سایت به عنوان کاربر نویسنده باشید و حداقل 3 پست داشته باشید، 5% تخفیف اعمال خواهد شد
  • مشاهده وضعیت تخفیف ها برای این محصول
  • در صورتی که تمامی شرایط بالا را داشته باشید میتوانید این محصول را باقیمت 0 تومان دریافت نمایید.
  • همچنین میتوانید با وارد کردن کد تخفیف، از میزان تخفیف کد و شرایط بالا بصورت همزمان استفاده کنید

بستن
در صورتی که سوالی راجع به این آموزش دارید در بخش نظرات همین پست مطرح و از ارسال ان از بخش ارتباط با ما خود داری نمائید

gnlsrmig پاسخ

1

vvckwoyg پاسخ

1
هم اکنون نـــظر بدهید

HyperSourCe.ir

info@hypersource.ir

کلیه حقوق برای وب سایت هایپر سورس محفوظ است
CopyRight ©2014-2018
ارتباط با ما
نام شما
ایمیل
موبایل
آیدی تلگرام

لطفا منتظر بمانید. . .

پیام سیستم