مدیریت حافظه و منابع Memory and Resource Management

دانلود مقاله تحقیقی آزمایشگاه سیستم عامل با موضوع مدیریت حافظه و منابع Memory and Resource Management نوع فایل : Word تعداد صفحات : 37 *همراه با ترجمه به زبان انگلیسی* شرح محتوا مدیریت حافظه و منابع C++ در مدیریت حافظه انعطاف زیادی دارد ، اما تعداد کمی از برنامه نویسان C++ مکانیسم های در دس

دسته بندی: فنی و مهندسی » کامپیوتر و IT

تعداد مشاهده: 2400 مشاهده

فرمت فایل دانلودی:.zip

حجم فایل:23 کیلوبایت

  پرداخت و دانلود  قیمت: 25,000 تومان
پس از پرداخت، لینک دانلود فایل برای شما نشان داده می شود.
0 0 گزارش
  • دانلود مقاله تحقیقی آزمایشگاه سیستم عامل با موضوع مدیریت حافظه و منابع Memory and Resource Management

     نوع فایل Word 

    تعداد صفحات : 37

    *همراه با ترجمه به زبان انگلیسی*

    شرح محتوا 

    مدیریت حافظه و منابع

    C++ در مدیریت حافظه انعطاف زیادی دارد ، اما تعداد کمی از برنامه نویسان C++ مکانیسم های در دسترس و مورد استفاده و موجود را به طور کامل درک کرده اند .در این محیط برنامه نویسی ، سربار گذاری ، سازنده ها و مخرب ها ، استثناء ها ، توابع مجازی و استاتیک ، توابع عملگر و غیر عملگر همه با هم برای ایجاد انعطاف پذیری زیاد و مدیریت حافظه سفارشی ، می آیند . متاسفانه ، و شاید به دلیل اجتناب ناپذیر بودن ، همه اینها می توانند موجب کمی پیچیدگی شوند .
    در این فصل ، ما نگاهی داریم به ابنکه چگونه خصوصیات و ترکیبات مختلف C++ در مدیریت حافظه مورد استفاده قرار می گیرند ، چگونه گاهی اوقات به طور شگفت انگیز واکنش نشان می دهند ، و چگونه واکنش هایشان را ساده می کنند ...

    شکست در متمایز کردن تخصیص Array و Scalar

    آیا یک Widget همان آرایه ای از Widget ها است ؟ البته که نه . چرا تعدادی از برنا مه نویسان C++ از یافتن عملگرهای مختلفی که برای اختصاص دادن و آزاد کردن آرایه ها واسکالرها استفاده شده است ، تعجب می کنند ؟
    ما چگونگی اختصاص دادن و آزادکردن یک Widget را می دانیم.ما برای این کار از عملگرهای new و delete استفاده می کنیم .
    Widget *w = new Widget( arg );
    // . . .
    delete w;

    برخلاف بیشتر عملگرها در C++ ، رفتار عملگر new نمی تواند با سربارگذاری تغییر کند . عملگر new همیشه یک تابع را بنام عملگر new برای فراهم کردن حافظه فراخوانی می کند ، سپس ممکن است ان حافظه را مقدار دهی اولیه کند . در مورد Widget ، نامبرده ، با استفاده از عملگر new موجب فراخوانی یک تابع عملگرnew خواهد شد که یک پارامتراز نوع size_t می گیرد ، سپس درخواست یک سازنده Widget روی حافظه ای که مقداردهی نشده است خواهد کرد که توسط عملگرnew برای ایجاد یک شئ Widget برگردانده شده است ...

     

    بررسی شکست تخصیص حافظه

    در اینجا چند خط کد برای بررسی اختصاص حافظه ی موفق نمایش داده شده است :


    bool error = false;
    String **array = new String *[n];
    if( array ) {
    for( String **p = array; p < array+n; ++p ) {
    String *tmp = new String;
    if( tmp )
    *p = tmp;
    else {
    error = true;
    break;
    }
    }
    }
    else
    error = true;
    if( error )
    handleError();

    این روش کدنویسی زحمت زیادی دارد ، اما ممکن است تلاش ما ارزش زیادی داشته باشد اگر ان توانایی نمایان ساختن همه ناتوانی های ممکن در تخصیص حافظه را داشته باشد ...

    جایگزینی new و delete سراسری

    جایگزینی نسخه های استاندارد و سراسری عملگر new ، عملگرdelete ، آرایه ی new ، یا آرایه ی delete هرگز عقیده ی خوبی نیست ، حتی با وجود اینکه استاندارد ان را مجاز می داند . نسخه های استاندارد عموما برای هدف کلی مدیریت حافظه بهینه شده اند ، و کاربر تعریف شده که جایگزین می شود بعید می رسد که ان را به خوبی انجام دهد .
    هدف ویژه ی نسخه های عملگر new و عملگرdelete که رفتار متفاوتی را از نسخه های استاندارد پیاده سازی می کند احتمالا اشکالاتی داشته باشند ، چون که صحت تعداد زیادی از کتابخانه های استاندارد و کتابخانه های سه بخشی به پیاده سازی استاندارد پیش فرض این توابع وابسته است ...

     

     

    Memory and Resource Management


    C++ offers tremendous flexibility in managing memory, but few C++ programmers fully understand the available mechanisms. In this area of the language ,overloading , name hiding, constructors and destructors, exceptions, static and virtual functions, ...

     


    Failure to Distinguish Scalar and Array Allocation

     

    Is a Widget the same thing as an array of Widgets? Of course not. Then why are so many C++ programmers surprised to find that different operators are used to allocate and free arrays and scalars?
    We know how to allocate and free a single Widget. We use the new and delete operators:

     

    Widget *w = new Widget( arg );
    // . . .
    delete w;

     

    Unlike most operators in C++, the behavior of the new operator can’t be modified by overloading. The new operator always calls a function named operator new to obtain some storage,...

     

    Checking for Allocation Failure


    Here’s some code that’s careful to check that every memory allocation succeeds:

     

    bool error = false;
    String **array = new String *[n];
    if( array ) {
    for( String **p = array; p < array+n; ++p ) {
    String *tmp = new String;
    if( tmp )
    *p = tmp;
    else {
    error = true;
    break;
    }
    }
    }
    else
    error = true;
    if( error )
    handleError();

     


    This style of coding is a lot of trouble, but it might be worth the effort if it were able to detect all possible memory allocation failures...

     

     

    Replacing Global New and Delete


    It’s almost never a good idea to replace the standard, global versions of operator new, operator delete, array new, or array delete, even though the standard permits it. The standard versions are typically highly optimized for general-purpose storage management, and user-defined replacements are unlikely to do better

     

    Special-purpose versions of operator new and operator delete that implement different behavior from the standard versions will probably introduce bugs, since the correctness of much of the standard library and many third-party libraries depends on the default standard implementations of these functions.

    A safer approach is to overload the global operator new rather than ...replace it... 

     



    برچسب ها: مدیریت حافظه و منابع Memory and Resource Management
  

به ما اعتماد کنید

تمامي كالاها و خدمات اين فروشگاه، حسب مورد داراي مجوزهاي لازم از مراجع مربوطه مي‌باشند و فعاليت‌هاي اين سايت تابع قوانين و مقررات جمهوري اسلامي ايران است.
این سایت در ستاد سازماندهی ثبت شده است.

درباره ما

در صــورت بروز هر گونه مشکل در خرید تماس ، پیامک پاسخگوی شما هستیم


09359579348
تمام حقوق سایت sabzfile.ir محفوظ می باشد و هرگونه کپی برداری پیگرد قانونی دارد. طراحی سایت