اطلاعیه

Collapse
No announcement yet.

مشکل همپوشانی حافظه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل همپوشانی حافظه

    یه مشکلی خیلی عجیب پیدا کردم دیگه دارم دیوونه میشم.سه روزه دارم روش کار میکنم ولی نتیجه نداده
    مشکلم اینه که من توی برنامم یه متغیره آرایه ای یک سری اطلاعات میریزم داخلش ولی محتوای اون به محتوای یه متغیر دیگه که هیچ ربطی بهش نداره میچسبه.
    حدس میزنم حافظم داره یه اتفاقاتی میفته داخلش.مثلا همپوشانی پیدا کرده
    با کد ویژن کار میکنم
    کسی اگه میدونه خواهشا کمکم کنه.دارم دیوونه میشم :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :cry2: :cry2:

    #2
    پاسخ : مشکل همپوشانی حافظه

    توی کدویژن برروی ارایه ها هیچ کنترلی نیست
    نمیدونم باگ زبون سی هست یا کامپایلر
    ولی دو حالت بیشتر نداری
    یا از فضات محدوده و روهم افتاد ارایه هات
    یعنی یکی رو ناخواسته تغییر دادی در حالی که ارایه دیگری رو که خارج از فضای تعریفش هست تغییر دادی
    به قسمت استک هم توجه کن
    هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
    بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
    میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

    تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

    دیدگاه


      #3
      پاسخ : مشکل همپوشانی حافظه

      یه چیزی میگم هر چند خارج از بحثه، شاید ربط داشته باشه
      تو AVR رجیسترها در بالای حافظه قرار دارند(یا یه همچین چیزی)
      در بسکام یه روشی هست که میان یک متغیر رو به عمد بر روی همون خونه رجیستر ایجاد میکنند تا بتونن در مد اسمبلی ازش استفاده کنند
      شاید این مشکل هم از کد ویژن باشه و آرایه تعریفی قسمتیش روی رجیسترها تعریف شده باشه و ...

      دیدگاه


        #4
        پاسخ : مشکل همپوشانی حافظه

        ممنونم از دوستانم
        damola دوست عزیزم فک نکنم با رجیستر تداخل پیدا کرده باشه چون مقدار یه آرایه به یه آرایه دیگه مخلوط میشه.متاسفانه بسکام کار نکردم تا حالا.به نظر خودم حافظم به هم ریخته :cry2:

        دیدگاه


          #5
          پاسخ : مشکل همپوشانی حافظه

          n340 دوست عزیزم این که گفتید منم نظرم همین هستش.فک میکنم حافظه رو هم افتاده.قسمت استکو تغیر میدم ولی هیچ فرقی نمیکنه
          راهی دیگه هست که بتونم خودمو راحت کنم :cry: :cry2: :cry2: :angry: :angry:

          دیدگاه


            #6
            پاسخ : مشکل همپوشانی حافظه

            اگه با کدوپژن کار می کنید اگر یک متغییر آرایه ای استفاده می کنید باید مواظب باشید تا آرایه بیشتر رو در برنامه مقدار دهی نکنید چون در اینصورت به شما پیغام خطایی نمی دهد و مقدار اون متغییر رو در متغییر بعدی که تعریف کرده اید می ریزد
            من بیشتر از یک هفته 6 سال پیش سر این موضوع گرفتار بودم تا فهمیدم مشکلم چیه !

            دیدگاه


              #7
              پاسخ : مشکل همپوشانی حافظه

              مهندس عباسی از کجا میتونیم مقدار مجاز آرایه رو بدونیم چند بایته.من تو یکی از توابعم یه آرایه 100 بایتی تعریف کردم ولی هنوز قسمت استک حافظم جا داره؟
              این قسمتی که فرمودید به استک هم مربوط میشه؟
              منم مشکلم دقیقا مثل مشکل شماست :angry: :angry:

              دیدگاه


                #8
                پاسخ : مشکل همپوشانی حافظه

                منظوزم اینه که مثلا :

                unsigned char a[100];
                و در برنامه :
                for (i=1;1<101;i++)
                a[i]=i;
                باید مراقب باشید وقتی که اون 101 خودش جای دیگه ای محاسبه کی شد مطمن باشید که بیشتر از طول آرایه تون نشه .
                مشکل من یک همچین چیزی بود با کمی پیچیدگی بیشتر و البته هیچ پیغام خطایی کمپایلر به من نمی داد .

                مقدار ram , stack رو اتفاقا کمپایلر چک می کنه و به شما پیغام خطا می ده ولی اینجور چیزها رو نمی تونه مخصوصا وقتی اون عدد 101 از توابع دیگری دربیاد و عدد ثابتی نباشه

                دیدگاه


                  #9
                  پاسخ : مشکل همپوشانی حافظه

                  آقا یه سوال
                  ببخشید اینقد سوال میپرسم
                  توی توابع اگه ورودیهاش به صورت آرایه ای تعریف شده باشه باید تعداد بایتهای آرایه مشخص باشه؟مثلا
                  کد:
                  void mmse(char a[10])

                  دیدگاه

                  لطفا صبر کنید...
                  X