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

نام تاپیک: در موردچگونگی تعریف حافظه ی پویا برای آرایه ی دو بعدی

  1. #1

    Question در موردچگونگی تعریف حافظه ی پویا برای آرایه ی دو بعدی

    سلام
    ببخشید

    در C++‎ چطوری می شه یک آرایه ی دوبعد ی پویا درست کرد؟
    این حافظه ی تخصیص داده شده را چطوری می شه حذف کرد؟

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: در موردچگونگی تعریف حافظه ی پویا برای آرایه ی دو بعدی

    روشهای زیادی وجود دارد

    char **a;
    // create
    (char *) a = (char *) new long[20];
    for( int i=0; i<20; i++)
    (char *) a[i] = (char *) new long [1];
    // delete
    for( int i=0; i<20; i++)
    delete [] a[i];
    delete [] a;

  3. #3

    نقل قول: در موردچگونگی تعریف حافظه ی پویا برای آرایه ی دو بعدی

    کاربر kamran_14 ، کاش یه جستجو قبل از ایجاد تاپیک میکردین .

    بدلیل پست tdkhakpur ، تاپیک حذف نشد .






  4. #4

    نقل قول: در موردچگونگی تعریف حافظه ی پویا برای آرایه ی دو بعدی

    ببخشید
       char **a;
    // create
    (char *) a = (char *) new long[20];
    for( int i=0; i<20; i++)
    (char *) a[i] = (char *) new long [1];
    // delete
    for(i=0; i<20; i++)
    delete [] a[i];
    delete [] a;
    شما چرا به جای char از long استفاده کردید؟
    آیا این هم درست است.
       char **a;
    // create
    a = new char[20];
    for( int i=0; i<20; i++)
    a[i] = new char [1];
    // delete
    for(i=0; i<20; i++)
    delete [] a[i];
    delete [] a;


  5. #5
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: در موردچگونگی تعریف حافظه ی پویا برای آرایه ی دو بعدی

    آیا این هم درست است.
    نه درست نیست خود اشاره گر هم به نوعی متغیره بوده که اندازه آن 4 بایت هست.
    شما در فوق حافظه ای را برای ایندکس اول اشاره گر که باید محتوایش آدرس باشد رزرو کردید که مقدارش 20 بایت هست ولی از انجایی که اگر اشاره گر به یک خانه از حافظه اشاره کند احتیاج به 4 بایت دارد لذا باید برای هر اشاره گر حافظه 4 بایتی رزور شود نه 1 بایتی.
    ولی کد شما میتواند با اصلاح زیر هم درست عمل کند.

    char **a;
    // create
    a = new char[20*4]; // اصلاح
    for( int i=0; i<20; i++)
    a[i] = new char [1];
    // delete
    for(i=0; i<20; i++)
    delete [] a[i];
    delete [] a;

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

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