powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / немогу очистить пямять
18 сообщений из 18, страница 1 из 1
немогу очистить пямять
    #34125983
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а точнее корректно удалить массив массивов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  long **x;  
  
  x=new long*[ 1000 ];
  for(int i= 0 ;i< 1000 ;i++)
  {
    x[i]=new long[ 1000 ];
    for(int j= 0 ;j< 1000 ;j++)
      x[i][j]= 102 ;         //присваиваю всем элементам пока одно значение
  } 

  
  for(int j= 0 ;j< 1000 - 1 ;j++)
    delete [] x[j];        //до этого момента программа работает нормально
  delete [] x; 

  
вообще весь этот x удалить можно
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34126081
AsPiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Programister0а точнее корректно удалить массив массивов
...
вообще весь этот x удалить можно
Код: plaintext
for(int j= 0 ;j< 1000 - 1 ;j++) // Зачем отнимаете  1 ?
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34126087
AsPiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Programister0а точнее корректно удалить массив массивов
...
вообще весь этот x удалить можноИ что вообще не получается сделать? Какие ошибки? В какой среде разработки?
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34126440
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Programister0а точнее корректно удалить массив массивов
Код: plaintext
1.
2.
  long **x;  
...
  
вообще весь этот x удалить можно
Одна из целей Страуструпа было отказаться от двойной косвенности. Он нашел изящное решение: классы, конструкторы, деструкторы.
В результате код С++ всегда внятен ( ) и управляем.
Вот вся твоя программа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
struct Long1000
{ long* x;
   Long1000(){x=new long[ 1000 ];}
  ~Long1000(){delete [] x;}
  void Set(long v){for(int i= 0 ;i <  1000 ;++i) x[i]=v;}
};
Long1000 *x=new Long1000[ 1000 ];
for(int i= 0 ;i <  1000 ;++i)
  x[i].Set( 102 );
delete [] x;
  
Нет никаких массивов массивов. Нет место для Почему?
Возникает правда вопрос: Зачем нужен этот код, если он ничего не выдает наружу?
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34126591
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пишу на CBuilder 6.0

ОПАньки ошибочка
вообще первый код работает нормально
но когда закидываю его в классы
начинаются ошибки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
class cls1
{
  public:
    long **x;
    cls1();
    ~cls1();
};

cls1::cls1()
{
  x=new long*[ 1000 ];    //точно также выделяется память
  for(int i= 0 ;i< 1000 ;i++)
  {
    x[i]=new long[ 1000 ];
    for(int j= 0 ;j< 1000 ;j++)
      x[i][j]= 102 ;         
  }
}

cls1::~cls1()
{
  //и точно также она очищается
  for(int j= 0 ;j< 1000 ;j++)  //по идее должно быть так
    delete [] x[j];            // но все равно неработает
  delete [] x;
}

все тоже самое но на деструкторе программа останавливается

а комрилятор запускает и говорит всё нормально
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34126638
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм... у меня работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
#include <stdio.h>
//extern "C" int printf(const char *, ...);
class cls1
{
  public:
    long **x;
    cls1();
    ~cls1();
};

cls1::cls1()
{
  x=new long*[ 1000 ];    //точно также выделяется память
  for(int i= 0 ;i< 1000 ;i++)
  {
    x[i]=new long[ 1000 ];
    for(int j= 0 ;j< 1000 ;j++)
      x[i][j]= 102 ;         
  }
}

cls1::~cls1()
{
  //и точно также она очищается
  for(int j= 0 ;j< 1000 ;j++)  //по идее должно быть так
    delete [] x[j];            // но все равно неработает
  delete [] x;
  printf("всё пучком");
}

int main(void)
{
 cls1 c;
 return  0 ;
}
вс2003
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34126752
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to maXmo
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int main(void)
{
 cls1 c;
 //так и у меня работает 
 //а ты здесь попробуй деструктор вызвать
 c.~cls1();
 return  0 ;
}
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34126793
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что мне, жить надоело? Деструктор вызывается при выходе из мейна, это можно наблюдать по строке, выплюнутой в консоль принтфом.
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34126803
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вариант
Код: plaintext
1.
2.
3.
4.
5.
int main(void)
{
 cls1 *c=new cls1();
 delete c;
 return  0 ;
}
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34126953
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
благодарю за вариант
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34127228
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pandrewОдна из целей Страуструпа было отказаться от двойной косвенности. Он нашел изящное решение: классы, конструкторы, деструкторы.
В результате код С++ всегда внятен ( ) и управляем.
У СтраусТрупа () случайно не надётся шаблончика для гипер-куба с произвольными параметрами? А то как-то жестко получается...

С уважением
mayton
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34127298
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonУ СтраусТрупа () случайно не надётся шаблончика для гипер-куба с произвольными параметрами? А то как-то жестко получается...Размерность какая?
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34127530
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pandrewРазмерность какая?

Хех... произвольная конечно!
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34127610
zzzzzzzzzzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton pandrewРазмерность какая?

Хех... произвольная конечно!

Если правильно понял вопрос про гиперкуб, то как вариант решения:

typedef vector<int> TCoord;
typedef map<TCoord, int> THypercube;
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34128256
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zzzzzzzzzzzЕсли правильно понял вопрос про гиперкуб, то как вариант решения:

typedef vector<int> TCoord;
typedef map<TCoord, int> THypercube;

Неа.

pandrew...
Не напрягайтесь. Мне не нужен гиперкуб. Это я так... сказал. Чтобы внимание акцентировать на изящных и не очень изящных решениях.

Спасибо что мысль поняли.
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34129340
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonНе напрягайтесь. Мне не нужен гиперкуб. Это я так... сказал. Чтобы внимание акцентировать на изящных и не очень изящных решениях.

Спасибо что мысль поняли.
Не переживай, я сильно не напрягался, я понял, что тебе надо было на углу отметку оставить.
Я под изящным понимаю нечто доставляющее мне эстетическое удовольствие, Гиперквадрат твой не из этой серии.
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34287219
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo
for(int j=0;j<1000;j++) //по идее должно быть так
delete [] x[j]; // но все равно неработает
delete [] x;
printf("всё пучком");
[/src]вс2003

прошу извинить меня за неполное понимание принципа работы delete[], но этот код точно удаляет весь ТРЕХмерный массив? Ведь таким же образом обычно удаляется ДВУмерный, не нужен ли ещё один внешний цикл?
...
Рейтинг: 0 / 0
немогу очистить пямять
    #34287222
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИЗВИНЯЮСЬ, недосмотрел объявление массива, мне показалось что он трехмерный
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / немогу очистить пямять
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]