رفتن به مطلب
بازگشایی انجمن! ×
GuardIran

جستجو در تالارهای گفتگو

در حال نمایش نتایج برای برچسب های 'memory management'.

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


تالارهای گفتگو

  • انجمن گاردایران
    • قوانین و اطلاعیه های سایت
    • اخبار هک و امنیت
    • انتقادات و پیشنهادات
    • بخش خصوصی
    • بخش ویژه - VIP
    • بخش زیر زمینی
  • سوال و جواب های عمومی
    • سوال و جواب های نفوذ به سایت ها و سرورها و روشهای مقابله
    • سوال و جواب های امنیت سیستم های شخصی
    • سوال و جواب های برنامه نویسی
    • سوال و جواب های ابزارهای امنیتی
    • سوال و جواب های شبکه
    • سوال و جواب های مدیریت محتوا و وبلاگ ها
    • سوال و جواب های بخش Trojan , Rat , Keylogger
    • سوال و جواب های سیستم عامل ها
    • سوال و جواب های امنیت ایمیل های شخصی
    • سوال و جواب الکترونیک
    • سوال و جواب های موبایل
    • سوال و جواب های متفرقه
  • انجمن نفوذ و امنیت
    • آموزش های تصویری
    • آموزش های تصویری نفوذ به سیستم های شخصی و روشهای مقابله
    • آموزش های تصویری سایت ها و سرورها و روشهای مقابله
    • آموزشهای تصویری شبکه و روشهای مقابله
    • حملات شبکه و راههای مقابله
    • DOS , DDOS
    • ویروس ها و تروجان ها
    • متاسپلویت Metasploit
    • ابزارهای امنیتی
    • Shell Script
    • آسیب پذیری های وایرلس
    • اکسپلویت
    • باگ های امنیتی
    • امنیت ایمیلهای شخصی
    • تارگت های تمرینی
    • اسکنرها و ابزارهای هکینگ
  • بخش کرک و رمزنگاری
    • ابزار کرک
    • مقالات و آموزشهای کرک
    • مقالات و آموزشهای رمزنگاری
    • ابزارهای رمزنگاری
    • پروکسی لیست
    • پسورد لیست و کمبو لیست
    • کانفیگ
    • اکانت های کرک شده
  • برنامه نویسی
    • برنامه نویسی
    • برنامه نویسی تحت وب
  • بخش موبایل
    • بخش مخصوص موبایل
    • هک موبایل
  • شبکه
    • Cisco سیسکو
    • نتورک پلاس Netwok+
    • مایکروسافت Microsoft
    • میکروتیک Microtics
    • مجازی سازی
    • ابزارهای شبکه و مانیتورینگ
    • فایروال
  • سیستم عامل
    • لینوکس
    • ویندوز
    • کالی لینوکس Kali Linux
    • مکینتاش
  • الکترونيک و روباتيک
    • الکترونيک
    • ميکروکنترلرها و پروسسور ها
    • نرم افزار هاي تخصصي برق و الکترونيک
    • روباتيک
  • گرافيک
    • فتوشاپ
    • فلش
  • متفرقه
    • بحث آزاد

وبلاگ‌ها

چیزی برای نمایش وجود ندارد


جستجو در...

نمایش نتایجی که شامل...


تاریخ ایجاد

  • شروع

    پایان


آخرین بروزرسانی

  • شروع

    پایان


فیلتر بر اساس تعداد...

تاریخ عضویت

  • شروع

    پایان


گروه


About Me

  1. سلام و درود خدمت همگی دوستان. همونجور که میدونید در زبان C وقتی یک آرایه تعریف می کنیم تعداد عناصر اون باید مشخص باشه و این تعداد غیرقابل تغییر هست. متغیرهایی مثل متغیرهای زیر در حافظه استک (Stack) ذخیره می شوند. char a; int b; float c; char d[10]; ... حافظه متغیرهایی که در استک ذخیره می شوند به صورت خودکار بعد از استفاده، آزاد می شود. برای اینکه بتونیم در زمان اجرای برنامه میزان حافظه یک متغیر را مشخص کنیم باید از حافظه هیپ (Heap) استفاده کنیم. حافظه متغیرهایی که در هیپ ذخیره می شوند برخلاف متغیرهای استک به صورت خودکار، آزاد نمی شود و برنامه نویس باید زمانی که دیگر به آن حافظه نیاز ندارد، آن را آزاد کند. در غیر این صورت این حافظه تا زمان پایان برنامه اشغال شده باقی می ماند تا زمانی که برنامه به پایان رسیده و سیستم عامل منابع را پس بگیرد. چهار تابع در زبان سی برای مدیریت حافظه وجود دارد که عبارتند از: malloc, calloc, free و realloc. این توابع در فایل هدر stdlib.h قرار دارند. تابع malloc: این تابع میزان حافظه مورد نیاز به بایت را گرفته و درصورتی که این مقدار حافظه وجود داشته باشه یک اشاره گر (Pointer) به آن بر میگرداند. #include <stdio.h> #include <stdlib.h> int main() { int *ptr; ptr = (int*) malloc(10 * sizeof(int)); if (ptr == NULL) { printf("Can't allocate memory\n"); exit(-1); } return 0; } در کد بالا ۱۰ ضربدر سایز int شده و به این معنی است که به اندازه ۱۰ اینتیجر حافظه به ptr اختصاص داده شود. در صورتی که این مقدار حافظه موجود باشد یک اشاره گر به آن برگردانده میشود و در غیر این صورت ptr برابر با NULL می شود. تابع calloc: این تابع شباهت زیادی به malloc دارد. دو ورودی می گیرد که اولی تعداد عناصر آرایه و دومی سایز هر عنصر است. #include <stdio.h> #include <stdlib.h> int main() { char *ptr; ptr = (char*) calloc(5, sizeof(char)); if (ptr == NULL) { printf("Can't allocate memory\n"); exit(-1); } return 0; } تفاوت malloc و calloc در این است که malloc حافظه تخصیص داده شده را مقداردهی اولیه نمی کند ولی calloc حافظه را با صفر مقداردهی اولیه می کند. تابع free: همانطور که گفتیم حافظه های اختصاص داده شده به صورت خودکار آزاد نمی شوند. برای آزاد کردن حافظه باید از تابع free استفاده کنیم. این تابع یک اشاره گر به حافظه را می گیرد و آن حافظه را آزاد می کند. #include <stdio.h> #include <stdlib.h> int main() { int *ptr; ptr = malloc(100 * sizeof(int)); if (ptr == NULL) exit(-1); ... free(ptr); return 0; } تابع realloc: این تابع برای تغییر اندازه حافظه اختصاص داده شده استفاده می شود. پارامتر اول آن اشاره گر به حافظه و پارامتر دوم میزان حافظه جدید است. #include <stdio.h> #include <stdlib.h> int main() { int *ptr; ptr = (int*) malloc(2 * sizeof(int)); if (ptr == NULL) exit(-1); ptr[0] = 100; ptr[1] = 200; ptr = (int*) realloc(ptr, 3 * sizeof(int)); if (ptr == NULL) exit(-1); ptr[2] = 300; printf("%d %d %d\n", ptr[0], ptr[1], ptr[2]); free(ptr); return 0; }
×
×
  • ایجاد مورد جدید...