زبان برنامه‌نویسی D بخش ششم
S h a b g a r d . O R G
.::Security Group::.

*Nix *Nix *Nix *Nix *Nix *Nix *Nix مبتدی مبتدی مبتدی

    Search for in  

  خانه

  *Nix

      مبتدی

      متوسط

      تخصصی

  Windows

      مبتدی

      متوسط

      تخصصی

  network

  Programming

      PHP

  Security

  Hacking

  Program

      MS-Word

      Graphic

  Cisco

  Hardware



زبان برنامه‌نویسی D بخش ششم
Posted by on Dec 31, 2004, 17:13

نحوه برقراری ارتباط اشیای دارای جمع آوری زباله با کد بیرونی:

جمع آور زباله به دنبال ریشه ها د سگمنت داده ایستا و پشته ها و محتویات رجیستر هر رشته‌ی اجرا می گردد. اگر تنها ریشه یک شیئی بیرون از آنها باشد ، جمــــع آور زباله آن را از بین می برد و حافظه را آزاد می‌سازد.

برای اجتناب از این واقعه باید:

ریشه دسترسی به یک شیئی را در جایی ابقا کنیم که جمع آور زباله در آن جا به دنبال ریشه می گردد .

به شیـــئی مجــــــدداً توسط تخصیص دهنده که خارجی یا کتــــابخانه های زمان اجرای C ( malloc/free ) ، حافظه تخصیص دهیم .

اشاره گرها و جمع آور زباله

الگوریتم های جمع آوری زباله بستگی دارد به اشاره گرهایی که به چیزی در حال اشاره ‌اند و غیر اشاره‌گرها که به چیزی اشاره نمی کرده اند . بدین منظور دستورات زیر که در C غیر معمول نیستند باید به دقت در D از آنها خودداری شود :

۱) اشاره گرها را با xor کردن آنها با مقادیر دیگر مخفی نکنید مانند اشاره گر xor شده حقه‌ی لیست پیوندی در C . از حقه‌ی xor برای جا به جا کردن مقادیر دو اشاره گر استفاده نکنید .

۲) اشاره گرهای به مقادیر صحیح را توسط cast یا دیگر حقه ها ذخیره نکنید چون جمع آوری زباله انواع غیر اشاره‌گر را برای یافتن ریشه های دسترسی بررسی نمی کند .

۳) از مزیت هم ترازی اشاره گرها برای ذخیره فلگهای بیتی در بیتهای سطح پائین یا بیتهای سطح بالا استفاده نکنید .

۴) مقادیر صحیح را در اشاره گرها نگهداری نکنید و

۵) مقادیر سحر آمیز را در اشاره گرها ذخیره نکنید به غیر از null .

۶) اگر شما باید یک مکان نگهداری خاص را بین انواع اشاره گر و غیر اشاره‌گر به اشتراک بگذارید از union استفاده کنید تا جمع آور زباله تکلیف خودش را در آن مورد بداند .

در حقیقت تا جایی که می شود از اشاره گرها استفاده نکنید . D دارای خصوصیات است که نشان می دهد که اغلب اشاره گرهای آشکارا ، متروک و بلااستفاده خواهند بود . مانند اشیاء مرجع ، آرایه های پویا و جمع آوری زباله . اشاره گرها برای ارتباط موفق با API های C و بعضی کارهای کیمیاگرانه پدید آمده بودند .


ساختمانها و یونیون ها

Aggregate Declaration

شبیه C کار می کنند با تفاوتهای زیر :

۱) بدون فیلد های بیت

۲) هم ترازی به طور آشکار قابل مشخص کردن است .

۳) بدون فضای نام برچسب جداگانه – نام برچسب ها در حوزه کنونی می باشند .

۴) اعلان هایی مانند struct ABC x ; مجاز نیستند بنویسید : ABC x ;

۵) ساختمانها یا یونیون های بی نام می توانند عضوی از ساختمانها یا یونیون های دیگر باشند .

۶) انتساب دهنده های پیش فرض اولیه برای اعضا پشتیبانی می شود .

۷) توابع عضو و اعضای استاتیک مجاز است .

ساختمانها و یونیون ها به معنی اجتماع ساده داده ها یا راهی برای رنگ و آب دادن به یک ساختمان داده می باشد ، علاوه بر سخت افزار یا یک نوع خارجی ، انواع خارجی می توانند توسط API سیستم عامل یا یک فرمت فایل تعریف شوند . خصوصیات شیئی گرا نیز با نوع داده کلاس فراهم شده اند .


انتساب اولیه استاتیک ساختمان ها

به اعضای ساختمان استاتیک به طور پیش فرض مقدار صفر انتساب داده می شود و به مقادیر ممیز شناور مقدار NAN . اگر یک انتساب دهنده اولیه‌ی استاتیک فراهم شود ، اعضا به وسیله نام عضو ، کولوم و املای عبارت انتساب اولیه می شوند . در ضمن ممکن است اعضا به هر نحو انتساب اولیه شوند .

struct X { int a; int b; int c; int d = 7;}

static X x = { a:1, b:2}; // c is set to 0, d to 7

static X z = { c:4, b:5, a:2 , d:5}; // z.a = 2, z.b = 5, z.c = 4, d = 5

انتساب اولیه‌ی استاتیک یونیون ها

یونیون ها به طور آشکار مقدار دهی اولیه می شوند :

union U { int a ; double b ; }

static U u = { b : 5.0 } ; // u.b = 5.0

دیگر اعضای یونیون که انتساب دهنده را جای می گذارند ولی فضای بیشتری اشغال می کنند مقدار صفر می گیرند .

Enums

اعلان Enum

enum identifier { اعضا }

enum { اعضا }

enum identifier ;

Enum ها کاربرد معمولی ماکروهای # define را با ثبات های تعریف جایگزین می کنند .

Enum ها همچنین می توانند بی نام باشند که در آن مورد به سادگی ثابت های مجتمع را تعیف می کنند و یا دارای نام باشند که مقدمه یک نوع جدید خواهند بود .

C = 2 , b=1 , A=0 ثابتهای enum { A,B,C} بدون نام enum

را تعریف می کند . در حالی که Enum دارای نام enum X { A,B,C} نوع جدید x با مقادیر X.A = 0 و X.B = 1 و X.C =2 تعریف می کند .

Enum ها باید حداقل دارای یک عضو باشند . اگر برای یک عضو Enum یک عبارت ریاضی فراهم شده باشد ارزش عضو مذکور برابر حاصل عبارت است و عضو بعدی Enum دارای ارزش عضو قبلی به علاوه یک است .

Enum { A , B = 5 + 7 , C, D = 8 , E }


داریم A = 0 , B = 12 , C = 13 , D = 8 , E = 9

صفات Enum

کوچکترین عضو min

بزرگترین عضو max

سایز نگهداری ارزش عضو size

مقدار دهی Enum

در غیاب یک مقدار دهنده به صورت آشکار ، یک متغیر Enum دارای مقدار اولین عضو است .

Enum X { A = 3 , B,C }

مقدار X برابر 3 می شود . X x ;



حمید نصیبی hamidnsaba@yahoo.com






---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
Latest Headlines

 *Nix
 نصب سيستم عامل لينوكس وفارسي نويسي در محيط
kavoshgar.blogsky.com
 نصب سيستم عامل لینوکس مندریک 9.2 Mandrake linux
 راهنماي كاربران جديد لينوكس
 راهنماي كاربران جديد لينوكس
 تعاريف پايه و نكات كاربردي در لينوكس و يونيكس
 تنظیماتIP و شبکه در گنو / لینوکس
 تعیین سطوح دسترسی کاربران در لینوکس
 تاریخچه لینوکس
 ظاهر پوسته فرمان
 استفاده از پوسته فرمان در لینوکس
 Windows
 بازگرداندن ویندوز خراب شده به حالت قبل از بروز مشکل
 چگونه میتوان در ويندوز 98 و ME به درايو NTFS دسترسي داشت
 با افزودن پسورد دوم براي ورود به ویندوز XP امنیت خود را تا حد زیادی افزایش دهید
 برنامه های تحت داس و قدیمی را چگونه در XP اجرا کنیم
 نصب ويندوز 98 يا ME در محیط ويندوز NT يا XP فقط در یک دقیقه و نیم
 مقدمات و نيازهاي شما براي يادگيري TCP/IP
 امكانات شبكه اي ويندوز
 SSL چيست ؟
 آموزش HyperTerminal
 آموزش كرك فايل هاي SAM
 network
 كارت شبكه يا LAN Card
 شبكه سرى يا BNC
 شبكه Hub
 تنظيم و كنترل برنامه Network Neighborhood
 استفاده از شبكه و عمل Sharing
 نصب و تنظيم برنامه Wingate جهت اتصال شبكه به سرور و اينترنت
 AAA (Authentication, Authorization and Accounting)
 مقدمه ای بر شبکه خصوصی مجازی (VPN)
 ip و port
  RFC چيست؟
 Programming
 زبان برنامه نویسی D قسمت اول
 زبان برنامه سازی D تحت لینوکس قسمت دوم
 زبان برنامه‌نويسی D بخش سوم
 زبان برنامه نویسی D بخش چهارم
 زبان برنامه نویسی D بخش پنجم
 زبان برنامه‌نویسی D بخش ششم
 نرم‌افزار آزاد یا باز‌متن چیست؟
 مقدمه ای بر برنامه نويسی شی گراء در دات نت
 آموزش رتينا
 ايجاد فايل XML با استفاده از يک بانک اطلاعاتی
 Security
 بررسی نحوه عملکرد فایروال Firewallیا ديواره آتش
 مقايسه سرورهای لينوکس و ويندوز
 چه فایلهائی میتوانند برای کاربران مخاطره آمیز باشند !
 امنيت برنامه های وب ( بخش اول )
 امنيت برنامه های وب ( بخش دوم )
 امنيت برنامه های وب ( بخش سوم )
 امنيت برنامه های وب ( بخش چهارم )
 امنيت برنامه های وب ( بخش پنچم )
 امنيت نامه های الکترونيکی ( بخش اول )
 مفاهيم اوليه پروتکل TCP/IP ( بخش اول )
 Hacking
 چگونه هکر شویم؟ بخش اول
 چگونه هکر شویم؟ بخش دوم
 هنر هشتم : كرك كردن
 مقدمات قبل از شروع يادگيری هک
 Port Scanning
 Port Scanning
  کاربرد نرم‌افزار nmap
 IP Scanning
 پورت ۷۹
 پورت ۸۰ چيست؟
 Program
  آموزشهاي افكتهاي فتوشاپ
 Shocking Text
 مبانی آشنايی با Word
  آموزش ساخت متن یخی
 نصب تم در موزیلا فایرفاکس
 کلید های میانبر در فایرفاکس
 Cisco
 آشنايي با مدارک سيسکو
 Cisco Systems
 Hardware
 آشنايي با پورت USB
 نحوه انتخاب يك كارت صدا