ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





نمایش نتایج: از 1 به 4 از 4
  1. #1
    تاریخ عضویت
    2020/05/24
    نوشته ها
    2
    0
    Junior Member

    یک راه حل در اشغال رم(ارسال رشته)

    سلام به همه و عید فطر مبارک
    در برنامه نویسی به موضوعی برخورد کردم که تابحال راه حل ساده ای براش پیدا نکردم!
    تابع زیر رو در نظر بگیرید: (تابعی جهت ارسال یک رشته)

    void send_str(char *const pStr, const int lenStr);
    یه تابع ساده که دوتا آرگومان داره:
    اولی یک اشاره گر به یک رشته هستش. (اون کلمه const که بعد از علامت “*” اومده باعث میشه از تغییر دادن آدرس درون اشاره گر جلوگیری بشه تا مطمئن باشیم به طور اشتباهی درون تابع آدرس اشاره گر تغییر نمیکنه)
    دومی طول دیتا جهت ارسال رو مشخص میکنه.

    -----------------------------
    مشکل: وقتی از این تابع به شکل زیر استفاده بشه:

    send_str( “salam”, 5);
    رشته salam ارسال میشه و به میزان 5 Byte از ram اشغال میشه.
    حالا اگر دوبار از این تابع استفاده بشه:

    send_str( “salam”, 5); send_str( “salam”, 5);
    رشته test1 ارسال میشه اما این بار 10 Byte از Ram اشغال میشه.
    درواقع پس از هر بار استفاده از این تابع شاهد این هستیم که ram اشغالی هم افزایش پیدا میکنه.
    برای رفع این مشکل اشغال زیاد ram اومدم یه رشته به طول طولانی ترین متن ایجاد کردم و هر بار که قصد ارسال متنی رو دارم اول اون متن رو به صورت کاراکتر به کاراکتر درون اون رشته قرار میدم وبعد اراسل میکنم.
    اینجوری تنها به اندازه اون رشته فضای ram اشغال شده.
    مثال از این روش:
    char mainStr[10] = “123”; //10 Byte use of Ram send_str( mainStr, 3); //not need to use new Ram. str[0] = ‘s’; str[1] = ‘a’; str[2] = ‘l’; str[3] = ‘a’; str[4] = ‘m’; send_str( mainStr, 5); //not need to use new Ram. send_str( mainStr, 5); //not need to use new Ram.
    مزیت این کار: اشغال شدن ram تنها به اندازه رشته ای که برای ارسال متن ها ساختیم.
    عیب کار: وقتی با یه متن طولانی روبه رو میشیم بار گذاری اون متن طولانی درون رشته خیلی وقت گیر هست.(فکر کنید بخوایم 200 متن 300 کاراکتری رو ارسال کنیم)

    دوستان راه حلی برای این هست که بشه به شیوه دیگه ای این کار رو کرد تا رم زیادی اشغال نشه و تا این حد هم استفاده وقت گیر نشه؟
  2. #2
    تاریخ عضویت
    2017/11/22
    نوشته ها
    364
    239
    Administrator
    با سی کار میکنید یا سی پلاس پلاس؟
  3. #3
    تاریخ عضویت
    2020/05/24
    نوشته ها
    2
    0
    Junior Member
    نقل قول نوشته اصلی توسط AmRo نمایش پست ها
    با سی کار میکنید یا سی پلاس پلاس؟
    با c کار میکنم
  4. #4
    تاریخ عضویت
    2017/11/22
    نوشته ها
    364
    239
    Administrator
    لطفا کد مربوط به تابع رو تو فایل txt بفرستین....و دلیل این که میگین وقتی دو باره تابع رو فراخوانی کنیم...10 بایت اشغال میشه...چیه؟
نمایش نتایج: از 1 به 4 از 4

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •