نمایش نتایج 1 تا 2 از 2

نام تاپیک: مشکل در مورد تخصیص حافظه برای اشاره گر از نوع structure

  1. #1

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

    سلام
    من یه structure ای تعریف کردم که می خوام دو تا آرایه ی بایتی داشته باشه
    چون سایز آرایه ها تو زمان اجرا معلوم میشه، دو تا اشاره گر تعریف کردم و سایز هر کدومم تعریف کردم
    به این صورت:
    struct MyStruct{
    byte* First;
    int Firstsize;
    byte* Second;
    int Secondsize;
    }*mystruct;

    بعدش یه اشاره گر ازش تعریف کردم به اسم mystruct.
    حالا تو برنامم می خوام واسش حافظه بگیرم و مقادیری رو تو پارامتراش بریزم،
    اومدم این کارو کردم:
    mystruct =new MyStruct;
    if(!mystruct)
    //Allocation Failure
    SetLastError();
    mystruct -> Firstsize =size1;
    mystruct -> First =new byte [size1];
    mystruct -> Secondsize =size2;
    mystruct -> Second =new byte [size2];

    اول واسه mystruct حافظه گرفتم بعد چک کردم اگه حافظه نتونست بگیره یه ارور برگردونه(راستی من فایل winerror رو دیدم ولی اروری مربوط به مشکل تخصیص حافظه نداشت، می خواستم ببینم چه اروری باید واسه این مشکل ست کرد؟)
    بعدش به هر کدوم از پارامتراش مقدار دادم. size1 و size2 تو زمان اجرا تعیین می شن.حالا واسه اشاره گرای First و Second به اندازه اونها حافظه گرفتم.
    ولی مشکلم اینجاست که من که اول واسه mystruct حافظه گرفتم، برای پارامترای First و Second به اندازه فقط یه byte* حافظه می گیره نه به اندازه ی size1 و size2 بایت؟
    حالا چی کار باید بکنم که این مشکل حل بشه؟
    (در ضمن mystruct حتما باید اشاره گر باشه نه متغیر معمولی!)
    اصلا لازمه که من اول واسه mystruct حافظه بگیرم؟
    مرسی

  2. #2

    نقل قول: مشکل در مورد تخصیص حافظه برای اشاره گر از نوع structure

    سلام
    راستش من می خوام یه هم چین کدهایی رو که گذاشتم ، تو یه برنامه ی بزرگ استفاده کنم(یعنی راستش خودم هنوز کامپایلش نکردم که با دیباگ بفهمم دقیقا تو زمان اجرا چه جوری حافظه می گیره؟)
    ولی چون خودم تا حالا با هم چین موردی که یه اشاره گر به ساختار داشته باشم و اون ساختار هم پارامترای اشارهگر داشته باشه کار نکردم، اینه که نمی دونم این کاری که می خوام بکنم درسته یانه!

    راستش سوال اصلیم اینه که وقتی به mystruct حافظه تخصیص می دم، به اندازه ی یه نوع MyStruct حافظه می گیره دیگه درسته؟!
    حالا می خوام ببینم واسه اشارهگر های First و Second دقیقا چه قدر حافظه اختصاص می ده؟(راستش byte*رو همین جوری گفتم)
    بعدش اگه بخوام به اندازه size1 و size2 بایت به ترتیب به First و Second حافظه اختصاص بدم و توشون داده بریزم ، آیا این کار هیچ منافاتی با دستور اول(یعنی حافظه گرفتن به اندازه ی یه MyStruct واسه ی mystruct !) نداره؟
    یعنی اشکال نداره که اول به اندازه ی یه دونه MySrtruct اولیه حافظه بگیرم و بعد دوباره واسه پارامترهای اشارهگرش حافظه ی جدیدی بگیرم؟
    و ++c هم چین امکانی رو بهم میده؟

    بعدش هم اگه خواستم از درایه های اون اشاره گرها راحت با دستور زیر استفاده کنم؟
    mystruct->First[i]

    مرسی

قوانین ایجاد تاپیک در تالار

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