Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
68 / 41 / 14
Регистрация: 24.02.2013
Сообщений: 250

Освобождение памяти от переменных (или динамические переменные)

21.12.2013, 17:31. Показов 6407. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Подскажите пожалуйста одну такую деталь:
Вот в C/C++, мы объявляли динамические переменные и массивы при помощи указателей(int* mas=new int[100]).
Однако, в C#, как я заметил-статических переменных нету, т.к. каждая переменная там задаётся при помощи new Int32()(т.е. мы выделяем динам. память, как я понимаю, для нашей переменной, тем самым, объявив её значение).
Как мне тогда освободить память от переменной?
В C/C++ есть функции delete и free, однако, я не нашёл их в C#.
Читал про Disposable, но память так и не освободилась(в MSVS2012-IDisposable()).
Вот код для примера на C/C++:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
//...
int* mas=new int[100];
//...
delete mas;
//...

А как это могло бы выглядеть в C#?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.12.2013, 17:31
Ответы с готовыми решениями:

Динамические массивы и освобождение памяти
Здравствуйте, подскажите мне пожалуйста, правильно ли я освободил память, которая была занята массивом.. И почему, когда я вызываю...

Освобождение памяти из переменных
В ходе сортировки у меня возникают несколько массивов с большой размерностью, если выполнять событие много раз, то используемая память...

Выделение и освобождение памяти для локальных переменных функций
Привет Столкнулся со следующей проблемой. Написал простенькое приложение: читаем 1 строку из файла на диске, записываем 1 строку в файл...

4
Заблокирован
21.12.2013, 18:12
Цитата Сообщение от Jack Wade Посмотреть сообщение
Здравствуйте!

А как это могло бы выглядеть в C#?
Disposе() принудительно на шарпе нужно делать для таких обьектов как Graphics и немного других, если не в блоке using.
Все остальное собирает GC(GarbajeCollector) - если память выделяется, она ним же(GC) автоматически освобождается.

Добавлено через 8 минут
Две большие разницы между нативным кодом и .net.
Хотя, в нет есть класс для работы с нативностью System.Marshal.

Добавлено через 2 минуты
На С#-шарп-е особо не парьтесь про память.

Добавлено через 10 минут
Цитата Сообщение от Jack Wade Посмотреть сообщение
Однако, в C#, как я заметил-статических переменных нету, т.к. каждая переменная там задаётся при помощи new Int32()(т.е. мы выделяем динам. память, как я понимаю, для нашей переменной, тем самым, объявив её значение).
Смотря для чего вам нужны статические переменные
Например, спецификатор доступа readonly позволяет задать начальное значение переменной и запрещает дрыпать больше ее.

Через new создаются Обьекты, не более.
0
68 / 41 / 14
Регистрация: 24.02.2013
Сообщений: 250
21.12.2013, 18:15  [ТС]
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
На С#-шарп-е особо не парьтесь про память.
А из-за чего?
Память автоматически освобождается из выхода?
Я просто знаю, что в C/C++ память не освобождается при использовании "динамических" переменных и массивов. И их приходится удалять перед выходом из программы, дабы не засорять память.
А что в C#-е такого особенного?
К стати-я так и не нашёл Dispose в студии. Зато есть IDispose(), но я, немного не понял описание её функций...
Да и насчёт GC... Можете рассказать немного подробнее о ней, или дать статью, где можно было бы узнать про всё это?
0
Заблокирован
21.12.2013, 18:38
Цитата Сообщение от Jack Wade Посмотреть сообщение
А из-за чего?
Память автоматически освобождается из выхода?
GarbajeCollector работает при исполнении программы

Добавлено через 14 минут
Извините, но тупо заядлому сишнику обьяснять преимущества шарпа.
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
21.12.2013, 19:30
Garbage Collector
Jack Wade, открой книгу по шарпу, там всё лучше написано, чем тебе по памяти будут тут обрывки инфы рассказывать.

Добавлено через 19 минут
Цитата Сообщение от Jack Wade Посмотреть сообщение
А из-за чего?
Память автоматически освобождается из выхода?
Я просто знаю, что в C/C++ память не освобождается при использовании "динамических" переменных и массивов. И их приходится удалять перед выходом из программы, дабы не засорять память.
А что в C#-е такого особенного?
Интересно ты язык учишь на форуме. Читай книгу и учи язык делая примеры по книге, сохраняй важные моменты в проектах, чтобы в будущем посмотреть и вспомнить, что к чему.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2013, 19:30
Помогаю со студенческими работами здесь

Динамические (или не динамические.) переменные!
УважаемыЕ! Есть вопрос. Вот код программы (ТЗ метод северо-западного угла) - под спойлером. А вот ее маленький кусок,задача которого в том,...

Резервирование памяти/освобождение памяти для трехмерного массива
Необходимо создать трехмерный массив (A), в котором элементы вдоль направления Z выли бы выровнены по 16 байт. Есть две проблемы: ...

Что лучше передавать из функции в функцию — массив переменных или переменные по одной?
Что лучше передавать из функции в функцию - массив переменных или переменные по одной?

Освобождение переменных
Подскажите пожалуйста, может ли программа на Прологе выполнятся без освобождения переменных? И если нет, то почему?

Освобождение памяти
Подскажите, пожалуйста, я ещё зелёный в C#. Есть у меня класс Form1, при определённом событии в нём я создаю екземпляр класса Sposob и...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru