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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
DrMGC
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 83
#1

Удаление переменных из памаяти - C++

01.09.2013, 15:38. Просмотров 2164. Ответов 27
Метки нет (Все метки)

Как удалить переменную (в классе) созданную не через new или она автамfтически удалиться при вызове delete для объекта?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2013, 15:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление переменных из памаяти (C++):

Удаление переменных в куче, созданных статическим методом класса - C++
Добрый вечер форумчане. При изучении паттернов проектирования наткнулся на следующий код: #include <iostream> #include <assert.h> ...

Поменять местами значения целых переменных х и у не используя дополнительных переменных - C++
Знаю, что это очень простая задача, но никак не могу сделать, пожалуйста помогите!!! Поменять местами значения целых переменных х и у не...

Даны 5 переменных a,b,c,d,e - необходимо каждой из этих переменных присвоить число из текстового документа - C++
Есть у меня текстовый документ, в котором записаны 5 чисел. Каждое число в новой строчке. Предположим: 893 42 8 745 43 Даны 5...

Удаление переменных - PHP
где то читал что переменные нужно удалять, якобы это не так нагружает оперативную память, делаю к примеру так $a=''; $b=''; $c='';...

Удаление переменных в стеке - C++ Builder
TPoint points; points = Point(30,0); points = Point(60,20); points = Point(30,40); points = Point(0,20); ...

Удаление переменных сессии - PHP
Добрый день) Подскажите пожалуйста: Все переменные сессии можно удалить как session_unset() или session_destroy() unset($def) или...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.09.2013, 16:29 #16
Цитата Сообщение от ValeryS Посмотреть сообщение
а это указатель на выделенную память
a - это переменная, хоть и указатель. Она содержит адрес.
Цитата Сообщение от ValeryS Посмотреть сообщение
значит ли это что b ты тоже называешь переменной
Разумеется. a - тоже переменная (не зависимо от области видимости). Ты же можешь их изменить! От того они и называются переменными, потому что они переменны, их можно изменять.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
01.09.2013, 16:40 #17
Цитата Сообщение от castaway Посмотреть сообщение
Ты же можешь их изменить!
понятно
ты называешь переменными все что можно изменить
но член классы как и элемент структуры несколько по другому себя ведут
пока ты не объявил объект их нет в памяти а как только объявил то они появляются, хотя явно ты их не объявлял
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.09.2013, 16:43 #18
Цитата Сообщение от ValeryS Посмотреть сообщение
ты называешь переменными все что можно изменить
Это не я так их называю. Они так называются по-определению.
Цитата Сообщение от ValeryS Посмотреть сообщение
пока ты не объявил объект их нет в памяти а как только объявил то они появляются, хотя явно ты их не объявлял
Я вообще не понимаю при чем тут объект. Переменная называется переменной вне зависимости от того где она находится.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
01.09.2013, 18:26 #19
Цитата Сообщение от castaway Посмотреть сообщение
Это не я так их называю. Они так называются по-определению.
пример можно
сейчас пересмотрел стандарт
"Working Draft, Standard for Programming Language C++"
в частности "9.2 Class members"
н у не увидел слова variable
все в основном "members"
вот например
5 A member can be initialized using a constructor;
или вот
8 Non-static (9.4) data members shall not have incomplete types. In particular, a class C shall not contain a non-static
member of class C, but it can contain a pointer or reference to an object of class C.
6 A member shall not be auto, extern, or register.
ну не вижу я чтобы их называли переменными
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.09.2013, 18:52 #20
Цитата Сообщение от ValeryS Посмотреть сообщение
ну не вижу я чтобы их называли переменными
Блин.. Ну ты этого и не увидишь. Это так сказать, прописные истины. Это та основа, которую надо знать до изучения любого ЯП.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
01.09.2013, 19:08 #21
Цитата Сообщение от castaway Посмотреть сообщение
Это так сказать, прописные истины.
Понятно
Где они прописаны?
и все же я предпочитаю опираться на стандарт
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
01.09.2013, 19:12 #22
Цитата Сообщение от ValeryS Посмотреть сообщение
Где они прописаны?
В голове у каждого программиста.
Ты реально не понимаешь что такое переменная? Или тупо "стоишь на своем" ?
-J_O_K_E_R-
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
01.09.2013, 19:53 #23
C++
1
2
3
4
5
6
7
8
9
10
11
class SomeClass {
public:
    int *a = new int;
    SomeClass() {
        a = 5;
    }
 
    void rmA() {
        delete[] a;
    }
};
так пойдет? (начинаю программировать если ошибки где, не судите строго)
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
01.09.2013, 20:00 #24
Цитата Сообщение от -J_O_K_E_R- Посмотреть сообщение
так пойдет?
нет
Цитата Сообщение от -J_O_K_E_R- Посмотреть сообщение
int *a = new int;
ошибка в описании не можешь вызвать new
вызывай в конструкторе
Цитата Сообщение от -J_O_K_E_R- Посмотреть сообщение
a = 5;
этим ты присвоил указателю 5 т.е сказал ему чтобы он указывал на адрес 0х00000005
получишь исключение
Цитата Сообщение от -J_O_K_E_R- Посмотреть сообщение
int *a = new int;
Цитата Сообщение от -J_O_K_E_R- Посмотреть сообщение
delete[] a;
если выделяешь память для одного элемента то и удаляй для одного
C++
1
delete a;
-J_O_K_E_R-
3 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 82
01.09.2013, 20:02 #25
Цитата Сообщение от ValeryS Посмотреть сообщение
нет

ошибка в описании не можешь вызвать new
вызывай в конструкторе
этим ты присвоил указателю 5 т.е сказал ему чтобы он указывал на адрес 0х00000005
получишь исключение


если выделяешь память для одного элемента то и удаляй для одного
C++
1
delete a;

этот код пацик этот написал я лишь добавил new и делете...
незнаю что такое классы пока что....
SatanaXIII
Супер-модератор
Эксперт С++
5609 / 2643 / 244
Регистрация: 01.11.2011
Сообщений: 6,502
Завершенные тесты: 1
02.09.2013, 10:17 #26
ValeryS, по поводу переменных и членов класса:
castaway, имеет ввиду что это переменная, которая является членом класса. Это одновременно и то и другое. Нельзя в созданном классе объявить просто член, можно объявить член какого-то типа. Даже не типа, а чем будет являться этот член. Методом, константой, переменной... И соответственно, чтобы подчеркнуть отличие члена-переменной от обычной переменной, ее в стандарте и именуют как.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
02.09.2013, 19:26 #27
SatanaXIII,
да понял я
просто понятие "переменная" уж очень расплывчатое
она может быть локальная, глобальная, статическая, динамическая
и добавлять туда же, еще член класса
представь как будет звучать "переменная член класса", "переменная элемент структуры"
(хотя может это и правильно, но уж очень коряво звучит)
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
02.09.2013, 20:23 #28
Цитата Сообщение от ValeryS Посмотреть сообщение
но уж очень коряво звучит
Просто некоторые термины иногда звучат необычно для человека, который об этом практически никогда не задумывался Так, например, для меня, в одной из недавних тем прозвучало понятие "Динамическое программирование". Я смотрел на эту формулировку "как баран на новые ворота"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2013, 20:23
Привет! Вот еще темы с ответами:

Удаление get переменных из url - PHP
Здравствуйте! Есть такой код: $fn = array("1.log", "2.log", "3.log", "4.log"); $name = $fn; function arr_make($i) { $read =...

Удаление глобальных переменных - PHP ООП
Локальные переменные внутри функций не видимы на всю область приложения.Глобальные наоборот. $app = 'app'; //манипуляции с...

Инициализация и удаление переменных из памяти - C#
Скажите, правильно ли я понимаю процесс? (в коде я поставил комментарии) Если что, исправьте и покажите, что я понимаю неправильно. ...

Удаление переменных в определенное время - PHP
Есть массив с переменными, в него занесены ip адреса пользователей и мне надо что бы к примеру в 24:00 каждые сутки этот массив удалялся ну...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.09.2013, 20:23
Ответ Создать тему
Опции темы

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