Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dzrkot
zzzZZZ...
522 / 352 / 53
Регистрация: 11.09.2013
Сообщений: 2,022
#1

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

28.01.2014, 10:49. Просмотров 571. Ответов 13
Метки нет (Все метки)

в данном случае деструктор очистит всё, или нет?
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2014, 10:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос очистка памяти (C++):

Очистка памяти - C++
Подскажите пожалуйста что не так делаю, создаю массив лейблов: TLabel **Labels; Labels = new TLabel*; for(int i = 0; i &lt; rabot +...

Очистка памяти - C++
Цель: Написать программу, которая читает текст из файла и записывает в новый файл те слова, которые содержат буквы, введенные с...

Очистка памяти - C++
Как правильно очистить память в массиве классов Вот код конструктора, выделяющего память, и деструктора. Выдает ошибку в самом конце...

Очистка памяти - C++
При выполнении программы, память приложения растёт, а она должна быть неизменной. int main() { setlocale(LC_ALL, &quot;Russian&quot;); ...

Очистка памяти - C++
Вот сделал лабу и все работает отлично, но осталось последнее new выделяет память мне нужно добавить функцию которая будет вызыватся в...

Указатели и очистка памяти - C++
Возник интересный вопрос... class Test { int a; }; class Test1 : public Test { int b, c; }; int main() { Test1 *t = new Test1; ...

13
0x10
2478 / 1651 / 247
Регистрация: 24.11.2012
Сообщений: 4,087
28.01.2014, 11:05 #2
А где вообще выделение памяти под 'a'?
1
dzrkot
zzzZZZ...
522 / 352 / 53
Регистрация: 11.09.2013
Сообщений: 2,022
28.01.2014, 11:08  [ТС] #3
Цитата Сообщение от 0x10 Посмотреть сообщение
А где вообще выделение память под 'a'?
верно подмечено, но я уже заметил))
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
28.01.2014, 11:13 #4
а что такое вообще "a"?
1
0x10
2478 / 1651 / 247
Регистрация: 24.11.2012
Сообщений: 4,087
28.01.2014, 11:14 #5
Цитата Сообщение от Croessmah Посмотреть сообщение
а что такое вообще "a"?
Вангую, что int**.
1
dzrkot
zzzZZZ...
522 / 352 / 53
Регистрация: 11.09.2013
Сообщений: 2,022
28.01.2014, 11:17  [ТС] #6
Цитата Сообщение от 0x10 Посмотреть сообщение
Вангую, что int**.
ну вообщем-то да)
я думал это понятно из контекста....хотя да мысличиатть никто не умеет итд...)
0
0x10
2478 / 1651 / 247
Регистрация: 24.11.2012
Сообщений: 4,087
28.01.2014, 11:19 #7
Цитата Сообщение от dzrkot Посмотреть сообщение
я думал это понятно из контекста
Это мог быть любой объект с перегруженным оператором [].
1
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
28.01.2014, 11:21 #8
Цитата Сообщение от dzrkot Посмотреть сообщение
ну вообщем-то да)
тогда таким образом
C++
1
delete [] a;
освободиться только память выделенная для указателей
1
dzrkot
zzzZZZ...
522 / 352 / 53
Регистрация: 11.09.2013
Сообщений: 2,022
28.01.2014, 11:28  [ТС] #9
Цитата Сообщение от Croessmah Посмотреть сообщение
тогда таким образом
C++
1
delete [] a;
освободиться только память выделенная для указателей
т.е. значения которые записывались в b[] так где-то в памяти и останутся?
хм..а от них как избавиться?
0
0x10
2478 / 1651 / 247
Регистрация: 24.11.2012
Сообщений: 4,087
28.01.2014, 11:28 #10
Цитата Сообщение от dzrkot Посмотреть сообщение
хм..а от них как избавиться?
Как выделяли память, так и освобождать - в цикле.
1
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
28.01.2014, 11:29 #11
C++
1
2
3
for ( size_t i = 0 ; i < size ; ++i )
   delete [] a[i] ;
delete [] a ;
1
dzrkot
zzzZZZ...
522 / 352 / 53
Регистрация: 11.09.2013
Сообщений: 2,022
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;
}
а всё вижу, спасибо)

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

Не по теме:

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

0
dzrkot
zzzZZZ...
522 / 352 / 53
Регистрация: 11.09.2013
Сообщений: 2,022
28.01.2014, 11:42  [ТС] #14
Цитата Сообщение от 0x10 Посмотреть сообщение

Не по теме:

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

у меня нету задания, я просто пишу класс с кучей наследников итп итд пытаюсь использовать выделение памяти чтобы побольше граблей было, это всё чисто для повторения того что я прочитал, ещё чего-нибудь туда набабахаю сейчас....реализацию связных списков например не очень понимаю, тоже попробую реализовать
0
28.01.2014, 11:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2014, 11:42
Привет! Вот еще темы с ответами:

Ссылки и очистка памяти - C++
Здравствуйте! Если я создаю ссылку и присваиваю ей значение (константу или нет) должен я как и с указателями заботится об памяти? ...

Vector, очистка памяти - C++
У меня есть вектор, который состоит из объектов типа класс. После выполнения данного блока мои объекты удаляются(вызываются ихние...

Правильная очистка памяти - C++
Пытаюсь разобратся с работой с памятью в с++. Есть класс BigInteger содержащий в себе массив чисел int *arr. В конструкторе этот массив...

указатели и очистка памяти - C++
В отличии от java в с++ память по умолчанию нужно очищать самостоятельно. Понятно, что если память зарезервированная неким указателем...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru