Форум программистов, компьютерный форум CyberForum.ru

очистка памяти - C++

Восстановить пароль Регистрация
 
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
28.01.2014, 10:49     очистка памяти #1
в данном случае деструктор очистит всё, или нет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "base.h"
#include <cstdlib>
#include <ctime>
base::base(int x,int y)
{
    for (int i=0;i<x;i++)
    {
    int *b=new int[y];
        for (int j=0;j<y;j++)
        b[j]=-10+rand()%20;
    a[i]=b;
    }
}
 
base::~base()
{
delete [] a;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2014, 10:49     очистка памяти
Посмотрите здесь:

C++ Очистка памяти
C++ Очистка памяти массива (С++)
C++ указатели и очистка памяти
C++ Очистка памяти
C++ Очистка памяти
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
28.01.2014, 11:05     очистка памяти #2
А где вообще выделение памяти под 'a'?
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
28.01.2014, 11:08  [ТС]     очистка памяти #3
Цитата Сообщение от 0x10 Посмотреть сообщение
А где вообще выделение память под 'a'?
верно подмечено, но я уже заметил))
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
28.01.2014, 11:13     очистка памяти #4
а что такое вообще "a"?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
28.01.2014, 11:14     очистка памяти #5
Цитата Сообщение от Croessmah Посмотреть сообщение
а что такое вообще "a"?
Вангую, что int**.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
28.01.2014, 11:17  [ТС]     очистка памяти #6
Цитата Сообщение от 0x10 Посмотреть сообщение
Вангую, что int**.
ну вообщем-то да)
я думал это понятно из контекста....хотя да мысличиатть никто не умеет итд...)
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
28.01.2014, 11:19     очистка памяти #7
Цитата Сообщение от dzrkot Посмотреть сообщение
я думал это понятно из контекста
Это мог быть любой объект с перегруженным оператором [].
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
28.01.2014, 11:21     очистка памяти #8
Цитата Сообщение от dzrkot Посмотреть сообщение
ну вообщем-то да)
тогда таким образом
C++
1
delete [] a;
освободиться только память выделенная для указателей
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
28.01.2014, 11:28  [ТС]     очистка памяти #9
Цитата Сообщение от Croessmah Посмотреть сообщение
тогда таким образом
C++
1
delete [] a;
освободиться только память выделенная для указателей
т.е. значения которые записывались в b[] так где-то в памяти и останутся?
хм..а от них как избавиться?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
28.01.2014, 11:28     очистка памяти #10
Цитата Сообщение от dzrkot Посмотреть сообщение
хм..а от них как избавиться?
Как выделяли память, так и освобождать - в цикле.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
28.01.2014, 11:29     очистка памяти #11
C++
1
2
3
for ( size_t i = 0 ; i < size ; ++i )
   delete [] a[i] ;
delete [] a ;
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
28.01.2014, 11:33  [ТС]     очистка памяти #12
Цитата Сообщение от 0x10 Посмотреть сообщение
Как выделяли память, так и освобождать - в цикле.
м..?
C++
1
2
3
4
5
6
base::~base()
{
    for (int i=0;i<size_x;i++)
delete [] a[i];
delete [] a;
}
а всё вижу, спасибо)

// пробовал до этого так делать но ругалось - я подумал что ошибка и так нельзя, сейчас понял что я в синтаксисе тогда накосячил
0x10
28.01.2014, 11:36
  #13

Не по теме:

А ничем неприкрытые new и delete принципиально используются? В смысле, так задание поставлено, что нельзя обойтись тем же std::vector?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 11:42     очистка памяти
Еще ссылки по теме:

Vector, очистка памяти C++
Правильная очистка памяти C++
C++ Очистка памяти

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
28.01.2014, 11:42  [ТС]     очистка памяти #14
Цитата Сообщение от 0x10 Посмотреть сообщение

Не по теме:

А ничем неприкрытые new и delete принципиально используются? В смысле, так задание поставлено, что нельзя обойтись тем же std::vector?

у меня нету задания, я просто пишу класс с кучей наследников итп итд пытаюсь использовать выделение памяти чтобы побольше граблей было, это всё чисто для повторения того что я прочитал, ещё чего-нибудь туда набабахаю сейчас....реализацию связных списков например не очень понимаю, тоже попробую реализовать
Yandex
Объявления
28.01.2014, 11:42     очистка памяти
Ответ Создать тему
Опции темы

Текущее время: 00:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru