Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/75: Рейтинг темы: голосов - 75, средняя оценка - 4.57
 Аватар для DrMGC
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83

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

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

Студворк — интернет-сервис помощи студентам
Как удалить переменную (в классе) созданную не через new или она автамfтически удалиться при вызове delete для объекта?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.09.2013, 15:38
Ответы с готовыми решениями:

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

Удаление переменных
Возможно ли в lua удалить все переменные , что бы они в какой то момент все стали nil что бы не прописывать их все вручную

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

27
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.09.2013, 15:41
Переменная, память для которую выделена через new, удаляется через delete. При выходе из программы, все переменные, созданные через new, удаляются автоматически.
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
01.09.2013, 15:41
Цитата Сообщение от DrMGC Посмотреть сообщение
Как удалить переменную (в классе) созданную не через new
в классе не бывает переменных есть члены класса
и они живут пока живет объект класса, независимо от того как ты их создал
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.09.2013, 15:44
Цитата Сообщение от ValeryS Посмотреть сообщение
в классе не бывает переменных есть члены класса
и они живут пока живет объект класса, независимо от того как ты их создал
Блин, ну почему всегда приходится спорить...
Переменная называется переменной только потому, что её можно изменять.
Даже после "смерти" класса, область памяти, выделенная под переменную сама собой не освободится.
0
 Аватар для DrMGC
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83
01.09.2013, 15:45  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
class SomeClass {
public:
    int a;
    SomeClass() {
        a = 5;
    }
 
    void rmA() {
        // т.е. здесь удалить int a не получиться?
    }
};
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.09.2013, 15:50
DrMGC, а как ты её можешь удалить? Ты же не выделял под неё память динамически.
0
 Аватар для DrMGC
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 83
01.09.2013, 15:52  [ТС]
castaway, а при удалении класса она удаляется?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.09.2013, 15:53
[usr]DrMGC[/usr], а ты читаешь что пишут?
Цитата Сообщение от DrMGC Посмотреть сообщение
а при удалении класса она удаляется?
При удалении класса удаляется только переменная.
1
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
01.09.2013, 15:53
Цитата Сообщение от castaway Посмотреть сообщение
Блин, ну почему всегда приходится спорить...
не знаю
Цитата Сообщение от castaway Посмотреть сообщение
Переменная называется переменной только потому, что её можно изменять.
C++
1
2
3
4
class A
{
int tmp;
}
tmp это переменная или член класса?
Цитата Сообщение от castaway Посмотреть сообщение
Даже после "смерти" класса, область памяти, выделенная под переменную не освободится.
C++
1
2
3
4
{
 A b;
}
// здесь объект b класса  A уничтожен, значит ли это что tmp остается в памяти


Цитата Сообщение от DrMGC Посмотреть сообщение
void rmA() {
// т.е. здесь удалить int a не получиться?
}
пока ты не создал объект SomeClass то никакого a не будет в памяти
а как только создал она будет жить сколько живет объект
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.09.2013, 15:57
Цитата Сообщение от ValeryS Посмотреть сообщение
tmp это переменная или член класса?
Мне странно от тебя слышать, что член класса не является переменной.
Цитата Сообщение от ValeryS Посмотреть сообщение
пока ты не создал объект SomeClass то никакого a не будет в памяти
а как только создал она будет жить сколько живет объект
Мне казалось что в теме обсуждается динамическое выделение/освобождение памяти.
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
01.09.2013, 16:07
castaway,
я кажется понял что ты хотел сказать
C++
1
2
3
4
5
6
7
8
9
class A 
{
int * tmp;
 A(){ tmp=new int;};
}
 
{
 A b;
}
объект пропал, но память осталась
ты про это?

ну не совсем так член класса tmp, указатель, то же пропал
а выделенная память осталась, но до неё уже никто не достучится, поскольку нет указателя, налицо утечка памяти
но ведь речь то не про это

Добавлено через 5 минут
Цитата Сообщение от castaway Посмотреть сообщение
Мне странно от тебя слышать, что член класса не является переменной.
а он и не является, или является, как посмотреть
пока не создан объект это просто описалово которое физически не присутствует в памяти
а как только создан то появляется в памяти, и можно сказать, что это переменная, но не простая а связанная с объектом
C++
1
2
3
4
5
6
7
A b;
A c;
A e;
 
b.tmp=5;
c.tmp=10;
e.tmp=15;
есть в памяти переменная tmp? нет её
а есть три разных переменных b.tmp, c.tmp и e.tmp
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.09.2013, 16:11
Цитата Сообщение от ValeryS Посмотреть сообщение
объект пропал, но память осталась
ты про это?
Да. Именно про это.

Цитата Сообщение от ValeryS Посмотреть сообщение
а выделенная память осталась, но до неё уже никто не достучится, поскольку нет указателя, налицо утечка памяти
но ведь речь то не про это
Я просто упомянул об этом. Я не говорил что к нему "можно достучаться". "Достучаться" к нему будет нельзя, именно из-за этого и появится утечка памяти.

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
а он и не является, или является, как посмотреть
А тут нечего смотреть, он является переменной. Если хочешь "похоливарить" - милости прошу
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
01.09.2013, 16:17
Цитата Сообщение от castaway Посмотреть сообщение
Я не говорил что к нему "можно достучаться".
значит это уже не переменная
это просто участок памяти, причем занятый
чтобы была понятна разница между переменной и памятью посмотри на это
C++
1
2
3
int *a;
for(int i=0;i<10;i++)
  a=new int;
память будет выделена под десять int, но работать можем только с одним, последним, куда указывает указатель
остальные потеряли
вот и переменная(указатель) есть и память есть занятая а добраться до неё не можем

Добавлено через 1 минуту
Цитата Сообщение от castaway Посмотреть сообщение
А тут нечего смотреть, он является переменной.
хорошо а элементы структуры, ты тоже называешь переменной?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.09.2013, 16:20
Я не называю переменной выделенный участок памяти. В твоем примере переменная - это a, а не то, на что указывает указатель в виде имени a.
Цитата Сообщение от ValeryS Посмотреть сообщение
хорошо а элементы структуры, ты тоже называешь переменной?
Не совсем понял что ты хотел этим сказать. Поясни. Если можно с примером.
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
01.09.2013, 16:25
Цитата Сообщение от castaway Посмотреть сообщение
Я не называю переменной выделенный участок памяти.
это и есть выделенный участок памяти
Цитата Сообщение от castaway Посмотреть сообщение
В твоем примере переменная - это a.
а это указатель на выделенную память
указатель знает про память которую выделили, а память ничего не знает про указатель
Цитата Сообщение от castaway Посмотреть сообщение
Не совсем понял что ты хотел этим сказать. Поясни. Если можно с примером.
смотри
C++
1
2
3
4
5
6
7
8
9
10
class Cl
{
public:
 int a;
}
 
struct str
{
int b;
}
это синонимы
a ты называешь переменной
значит ли это что b ты тоже называешь переменной
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.09.2013, 16:29
Цитата Сообщение от ValeryS Посмотреть сообщение
а это указатель на выделенную память
a - это переменная, хоть и указатель. Она содержит адрес.
Цитата Сообщение от ValeryS Посмотреть сообщение
значит ли это что b ты тоже называешь переменной
Разумеется. a - тоже переменная (не зависимо от области видимости). Ты же можешь их изменить! От того они и называются переменными, потому что они переменны, их можно изменять.
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
01.09.2013, 16:40
Цитата Сообщение от castaway Посмотреть сообщение
Ты же можешь их изменить!
понятно
ты называешь переменными все что можно изменить
но член классы как и элемент структуры несколько по другому себя ведут
пока ты не объявил объект их нет в памяти а как только объявил то они появляются, хотя явно ты их не объявлял
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.09.2013, 16:43
Цитата Сообщение от ValeryS Посмотреть сообщение
ты называешь переменными все что можно изменить
Это не я так их называю. Они так называются по-определению.
Цитата Сообщение от ValeryS Посмотреть сообщение
пока ты не объявил объект их нет в памяти а как только объявил то они появляются, хотя явно ты их не объявлял
Я вообще не понимаю при чем тут объект. Переменная называется переменной вне зависимости от того где она находится.
0
Модератор
Эксперт по электронике
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
01.09.2013, 18:26
Цитата Сообщение от 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.
ну не вижу я чтобы их называли переменными
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
01.09.2013, 18:52
Цитата Сообщение от ValeryS Посмотреть сообщение
ну не вижу я чтобы их называли переменными
Блин.. Ну ты этого и не увидишь. Это так сказать, прописные истины. Это та основа, которую надо знать до изучения любого ЯП.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.09.2013, 18:52
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru