Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Многомерные динамические массивы


Автор: Deliverance 26.9.2009, 16:02
Собственно программа работает,тоько не могу понять удаляются ли все массивы или для этого нужно  что-то ещё?
Код

#include <iostream>
#include <windows.h>
#include <stdio.h>
using namespace std;




void main()
{
    SetConsoleOutputCP(1251);
    
    int ****p=NULL;
    p=new int***[2];
    
    for(int i=0;i<2;i++)
    {
        p[i]=new int**[3];

        for(int j=0;j<3;j++)
        {
            p[i][j]=new int*[4];
            for(int k=0;k<4;k++)
            {
               p[i][j][k]=new int[5];
            }
        }
            
    }

    for(int i=0;i<2;i++)
    {
        for(int j=0;j<3;j++)
        {
            for(int k=0;k<4;k++)
            {
                for(int l=0;l<5;l++)
                {

                   cout <<"p["<<i<<"]["<<j<<"]["<<k<<"]["<<l<<"]=";
                   cin >> p[i][j][k][l];
                }
                 cout <<"\n";
            }
             cout <<"\n";
        }
        cout <<"\n";
    }
    for(int i=0;i<2;i++)
    {
        
        for(int j=0;j<3;j++)
        {
            for(int k=0;k<4;k++)
            {
                for(int l=0;l<5;l++)
                {
                  cout  <<p[i][j][k][l]<<" ";
                }
                 cout <<"\n";
            }
            cout <<"\n";
        }
        cout <<"\n";
    }
   
   for(int i=0;i<2;i++)
    {
     delete[]p[i];
    }
   delete[]p;
   p=NULL;
}


Зарание благодарю.

Автор: zim22 26.9.2009, 16:09
Deliverance, подсказка: количество new должно быть равно количеству delete

Автор: Deliverance 26.9.2009, 16:12
Цитата(zim22 @ 26.9.2009,  16:09)
Deliverance, подсказка: количество new должно быть равно количеству delete


Это как организовать? Добавить пару циклов? Если не трудно пример кода.

Автор: zim22 26.9.2009, 16:21
Цитата(Deliverance @  26.9.2009,  16:12 Найти цитируемый пост)
Это как организовать?

ручками. написал new - не забудь написать и delete.

вот пример:
Код

int *p = new int(10); // выделил память
delete p; // почистил за собой

Автор: Deliverance 26.9.2009, 16:24
Цитата(zim22 @ 26.9.2009,  16:21)
Цитата(Deliverance @  26.9.2009,  16:12 Найти цитируемый пост)
Это как организовать?

ручками. написал new - не забудь написать и delete.

вот пример:
Код

int *p = new int(10); // выделил память
delete p; // почистил за собой

Я понимаю ,но как это сделать в конкретном примере? На вот такое 
Код

for(int i=0;i<2;i++)
    {
     for(int j=0;j<3;j++) //Это не работает,почему не понятно?
        {
            for(int k=0;k<4;k++)
            {
                delete[]p[k];
            }

            delete[]p[j];
        }
     delete[]p[i];
    }
   delete[]p;
   p=NULL;


Командная строка тупо виснет,а по чему я не могу понять(

Автор: zim22 26.9.2009, 16:34
Цитата(Deliverance @  26.9.2009,  16:24 Найти цитируемый пост)
Я понимаю ,но как это сделать в конкретном примере? 

Код

#include <iostream>

int main()
{         
  const int dimension = 5;
  int ********p = NULL;
  p = new int*******[dimension]; // выделили (1)

  for (int i = 0; i != dimension; ++i) 
    p[i] = new int******[10]; // выделили (2)

  ////////////////////////////////////

  for (int i = 0; i != dimension; ++i) 
    delete [] p[i]; // удалили (2)

  delete [] p; // удалили (1)

  return 0;
}

Автор: Deliverance 26.9.2009, 16:51
Не работает,та же самая проблема,а насчёт 
Код

 const int dimension = 5;

... так у меня их не два ,а 4-е и все различной длины

А вот так,
Код

for(int i=0;i<2;i++)
   {
     for(int j=0;j<3;j++)  
        {
          for(int k=0;k<4;k++) 
            {
             delete[]p[i][j][k];
            }
          delete[]p[i][j];
         }
      delete[]p[i];
    }
   delete[]p;

Всё путём!

Спасибо большое!!! smile 

Автор: bsa 27.9.2009, 17:01
Deliverance, используй std::vector и будет тебе счастье.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)