Что такое динамическая память. Утечка памяти. Стек и куча. Статическая память. Обзорный урок #45

Поділитися
Вставка
  • Опубліковано 6 жов 2024
  • Понравилось видео или оказалось полезным? Подпишись!
    Что такое динамическая память. Утечка памяти. Стек и куча. Статическая память. Обзорный урок #45
    Уроки по программированию
    Наша группа ВК smplcode
    Подписывайтесь на канал / @simplecodeit

КОМЕНТАРІ • 194

  • @ЮрийЧернюк-ъ5в
    @ЮрийЧернюк-ъ5в 6 років тому +245

    Да.... Серия уроков - удивительное сочетание знания материала + психология + педагогика.

  • @mr.warpunch6007
    @mr.warpunch6007 2 роки тому +58

    Лучший учитель за всё время моего обучения, низкий поклон за то что таких чайников как я подымаете с нуля, лайк слёту!

  • @nikolaikalashnikov6358
    @nikolaikalashnikov6358 3 роки тому +141

    хотел освоить программирование с++, но освоил программирование в paint :D

    • @SimpleCodeIT
      @SimpleCodeIT  3 роки тому +98

      не забудь в резюме указать это :D

  • @димитрийгоцман
    @димитрийгоцман 6 років тому +31

    Интересно кто ставит дизы?Граждане проявитесь и аргументируйте..Как по мне уроки крайне полезны,толковы и просты для понимания.

    • @ИисусГосподь-о9х
      @ИисусГосподь-о9х 6 років тому +49

      Пришел человек посмотреть видео-урок, ничего не понял(не хватило интеллекта, упорства, не прошел предыдущие уроки или все вместе..)
      ему стало обидно, начал во всем винить Автора т.к такова суть человека "во всем виноваты все, но не я" и поставил в отместку диз.

    • @PanVladyslav
      @PanVladyslav 5 років тому +8

      Ты же программист , возьми и найди )

    • @UnifiedGod
      @UnifiedGod 5 років тому

      Завистники

    • @mar_kha
      @mar_kha 3 роки тому +7

      Ненавистники Paint

    • @codingposture
      @codingposture 3 роки тому

      Конкуренты?

  • @SimpleCodeIT
    @SimpleCodeIT  7 років тому +34

    #динамическаяпамять #SimpleCode #урокипрограммирования

  • @ДимДимыч-ц1в
    @ДимДимыч-ц1в 3 роки тому +52

    6:45 - Указатель на адрес в оперативной памяти
    7:38 - Адрес оперативной памяти находящийся вне программы
    8:45 - Особенность С++ при работе с динамической памятью
    10:37 - Чем отличаются низкоуровневые языки программирования?

  • @МаксимСоколовский-ц6г

    Спасибо, Сергей, отличный урок!) Всё понятно и доступно, бегу смотреть следующий.)

  • @wildfox4820
    @wildfox4820 7 років тому +17

    Спасибо за урок!

  • @chech1l
    @chech1l 2 роки тому +20

    Сергей, вы уже мне как отец :D так просто и доходчиво объясняете. жаль по c# вы уроков давно не выпускали, надеюсь найдете силы для продолжения обучения, ни смотря ни на что. Вы нужны подписчикам

    • @Devaster-io
      @Devaster-io 2 місяці тому

      А вы знаете что с ним случилось? Просто давно не выпускает он ролики

    • @ПовлоРашцо
      @ПовлоРашцо 9 днів тому

      @@Devaster-ioон украинец, в украине война. Че с ним, хз

  • @ДмитрийОсипов-х1ф
    @ДмитрийОсипов-х1ф 7 років тому +103

    * Самые понятные, видео уроки по c++, на всём (RU) youtube *

  • @qellzxan155
    @qellzxan155 6 років тому +332

    Это лишь 45 урок, а я уже так много узнал...

    • @АртемМацуев-я7о
      @АртемМацуев-я7о 4 роки тому +42

      зато ты нигде бы (на русском ютубе уж точно) не нашел бы так углубленно рассказанный язык)

    • @_e_mask
      @_e_mask 3 роки тому +7

      спустя 2 года ты уже всё узнал....

    • @high-level-content-maker
      @high-level-content-maker 3 роки тому +6

      @@АртемМацуев-я7о ну если покопаться в документации на русском и английском, изучить куча книг от 1985-2021 года по с++, то можно и компьютер с помощью с++ построить.

    • @DigitRoach
      @DigitRoach 3 роки тому +6

      Спидран по плюсам за неделю

    • @DigitRoach
      @DigitRoach 3 роки тому +2

      @@high-level-content-maker можно своё ядро оси написать по фану

  • @Ermine882
    @Ermine882 7 років тому +7

    Спасибо за урок.

  • @maksymshylo8136
    @maksymshylo8136 6 років тому +11

    Очень благодарен за такой урок. Я хоть и проходил это еще на первом курсе но никак не понимал, а теперь все понял. Спасибо вам.

  • @АлександрСергеевич-ь4к

    языки - это как механика и автомат в автомобиле. Учиться лучше на механике. шарп и джава -автомат, си и кресты - механика. Ассемблер....велосипед)))

    • @viktoriiachvykova2026
      @viktoriiachvykova2026 4 роки тому +8

      Одноколесный х)

    • @BassmanOff
      @BassmanOff 4 роки тому +16

      Ассемблер - колесо, велосипед нужно собрать самому

    • @alexsef
      @alexsef 4 роки тому +11

      ассемблер - это чертеж, как сделать автомобиль)

    • @kroniecraft8339
      @kroniecraft8339 3 роки тому +6

      ассемблер еб*ное НЛО, больше туда не полезу

    • @comachine
      @comachine 3 роки тому +2

      А ассемблер это гаечный ключ для сборки запчастей для самолёта)

  • @kitcringe
    @kitcringe 6 років тому +6

    Всё понятно и ясно, в укрытие штурмуем 46 урок

  • @Evgeny..
    @Evgeny.. 4 роки тому +2

    Огромное спасибо!!!!

  • @archiechellaut9483
    @archiechellaut9483 3 роки тому +1

    Огромное спасибо за урок! Доступно, доходчиво и внятно!

    • @аоалал-х1т
      @аоалал-х1т 3 роки тому +1

      Привет, как успехи твои? у меня прост как-то средненько все, изучая новое, подзабываю старое(

    • @archiechellaut9483
      @archiechellaut9483 3 роки тому +1

      @@аоалал-х1т Привет. Потихоньку в любом случае придется повторять то, что не используешь. Тебе главное понять принцип, устройство того, как все работает и как с этим работать. А потом достаточно будет 1-2 дня, чтобы освежить это в памяти. У меня все хорошо, так же сижу на ООП, там посложнее, чем здесь. Так что потребуется усидчивость и немало усилий над собой. Надеюсь справлюсь и надеюсь ты справишься!

    • @аоалал-х1т
      @аоалал-х1т 3 роки тому +2

      @@archiechellaut9483 Я тож надеюсь, спасибо за ответ)

    • @turanefendiev5466
      @turanefendiev5466 2 роки тому +1

      @@archiechellaut9483 как успехи? спустя 4 месяца

    • @turanefendiev5466
      @turanefendiev5466 2 роки тому

      @@аоалал-х1т как успехи?

  • @ArtemBai-t6c
    @ArtemBai-t6c 2 роки тому +4

    За неделю голос Сергея стал родным.

  • @ИоаннДейкун
    @ИоаннДейкун Рік тому +4

    привет из 2023. Большое спасибо за уроки!

  • @DIO-ed1ml
    @DIO-ed1ml 5 років тому +28

    45 часть обучающего видео которое посмотрело 18 тыс. человек?Автор просто чародей)

  • @pavelios3577
    @pavelios3577 6 років тому +4

    Спасибо!

  • @OrionKropt
    @OrionKropt Рік тому +1

    Серёга лучший !

  • @saydrake9363
    @saydrake9363 3 роки тому

    Батька - молодец !

  • @ItachiUchiha-wd5kk
    @ItachiUchiha-wd5kk 10 місяців тому

    Интересно смотреть, узнаю много нового
    Я считай из-за вашего курса по с++ понял, что это моё
    Но когда впервые столкнулся, прошел несколько уроков и оставил до лучших времен, так как счел более важной целью изучение unreal engine
    Однако, наверное месяц назад, я вернулся к изучению плюсов и думаю стоит воспеть хвалебную оду вам и вашему каналу за столь прекрасный материал
    Всё таки здесь указана та база, без которой будет крайне сложно понимать документацию самого языка
    И при этом всё объяснено наилучшим образом
    Еще и звук крайне приятный, поэтому приходится смотреть в 2х, чтобы не заснуть как под сказку)

  • @Mayrbachaev
    @Mayrbachaev 5 років тому +2

    Очень доходчиво объясняет!!

  • @SAM-t6k7s
    @SAM-t6k7s Рік тому

    Уже ставлю лайк до просмотра😊

  • @polmesh2057
    @polmesh2057 Рік тому

    Спасибо 🙏 😊

  • @КириллСафронов-о9д

    Спасибо!🥰

  • @lucifernus2276
    @lucifernus2276 9 місяців тому

    Изучал по курсу на stepik и спустя месяц перерыва решил с 0 пересмотреть. Узнал даже что-то новое. Вся информация из берды по полочкам разложилась. Впереди повторение ООП😅

  • @royalflesh6377
    @royalflesh6377 3 роки тому

    большое спасибо!!!

  • @РусланКарнеенко
    @РусланКарнеенко 9 місяців тому

    Спасибо

  • @АртемКулык-у9х
    @АртемКулык-у9х 7 років тому +4

    спасибо)))

  • @chelovechek7773
    @chelovechek7773 5 місяців тому

    👍

  • @Безымянный-д3щ
    @Безымянный-д3щ 4 роки тому +1

    2:45 информативно

  • @ЯрославГоловко-ф6и

    спасибо

  • @артурайдаров-л6е
    @артурайдаров-л6е 7 років тому +2

    Спс

  • @mortak
    @mortak Рік тому

    лучший

  • @ИНФОРМАЦИЯДЛЯУСПЕШНЫХ

    Спсб

  • @ЯнаБабичева-е8ь
    @ЯнаБабичева-е8ь 2 роки тому

    После просмотра первого видео ставлю лайк еще не посмотрев

  • @JJzerro
    @JJzerro 2 роки тому +2

    Хм, а можно написать какое-то дополнение для Visual studio, выполняющее функции "Сборщика мусора" из C#, но для С++?

    • @infinity-w
      @infinity-w Рік тому

      следить самому не сложно, к тому же есть инструменты для анализа кода на предмет утечек. А сборщики мусора - они тормозят работу.

    • @JJzerro
      @JJzerro Рік тому +1

      @@infinity-w Эх, как немного времени прошло с написания этого коммента, но так много изменилось, я нашел сейчас свое счастье в 3д дизайне (архивиз). А бросил с++ ввиду того, что мне стало ясно что перспектив по жтой отрасли в моей стране нет (я не в рф, и не в украине), а уезжать, обучившись, в другую страну не хотелось

  • @ВолодимирМирош-у1к
    @ВолодимирМирош-у1к 5 років тому +6

    Может дать, а может и не дать

  • @артурайдаров-л6е
    @артурайдаров-л6е 7 років тому +2

    А через сколько дождём заранее спс

  • @sergeysergeevi496
    @sergeysergeevi496 3 роки тому

    Добро

  • @jellyfish6042
    @jellyfish6042 3 роки тому

    7:57, да навалить дейстительно можно чего угодно, особенно когда учишь рекусию и пітаешься ее глубоко понять =D

  • @ИгроманРоман-н2ш
    @ИгроманРоман-н2ш 2 роки тому

    Я неочень понял оно накапливается если не чистить на самом компьютере и если у тебя даже будет закрыта программа она там остается или только во время открытия программы она остается а после закрытия удалается?кст Спасибо за урок.

  • @Lutifer_666
    @Lutifer_666 3 роки тому

    Так а как же всё-таки сделать массив (вернее кучу) с заранее неизвестным кол-вом данных ?

  • @zerix8771
    @zerix8771 4 роки тому +1

    хотите фокус? Напишите int arr[1000000000000];
    cout

    • @crackall1946
      @crackall1946 4 роки тому +1

      И что будет

    • @voxel1547
      @voxel1547 4 роки тому +1

      Выглядит стремно

    • @codingposture
      @codingposture 3 роки тому

      Наверно будет биомусор

    • @chevstyle
      @chevstyle 3 роки тому

      наёбнет вашу оперативку

    • @svvonline1
      @svvonline1 9 місяців тому

      @@crackall1946 Зависит от компилятора, но скорее всего программа тупо не скомпилируется. Компилятор выдаст ошибку. Что -то типа error "....C2148: total size of array must not exceed 0x7fffffff bytes"

  • @minsk150
    @minsk150 4 роки тому

    thanks , 1 raz uvidel kak rabotaet ssulka

  • @legendarniy5714
    @legendarniy5714 5 місяців тому +1

    45 осталось 159

  • @andrewgrayson5835
    @andrewgrayson5835 5 років тому +19

    Я правильно понял, что динамическая память это и есть "куча"?

    • @mikesteinar2713
      @mikesteinar2713 4 роки тому +5

      Походу да. Когда у тя не хватает, ты идёшь на кучу и берёшь сколько надо. Только не забывай периодически относить обратно😄

    • @jerrody5400
      @jerrody5400 3 роки тому +7

      @@mikesteinar2713 появляются новые данные, уходят какие-то, ты для них выделяешь динамическую память в оперативной памяти. Скапливается со временем мусор, есть два варианта развития:
      -Ты очищаешь мусор, ненужную память(данные) для твоей программы.
      -Твоя программа-продакшн ложится на бочек и тебе Лид дает по шапке :)

    • @jellyfish6042
      @jellyfish6042 3 роки тому

      @@jerrody5400 =D

  • @adamauditore361
    @adamauditore361 3 роки тому +3

    чтобы программа не крашнулась если ос не выделит ей память можно сделать проверку
    if (!array)
    {
    return 1;
    }

    • @IT_Shkolnik
      @IT_Shkolnik 3 роки тому +1

      Или так ещё можно:
      if(array == nullptr)
      return 1;
      Просто вы сравнивайте с нулём, а я с ключевым словом, обозначающим пустой указатель

    • @ИгроманРоман-н2ш
      @ИгроманРоман-н2ш 2 роки тому +1

      что такое array это ключевое слово ?

    • @IT_Shkolnik
      @IT_Shkolnik 2 роки тому

      @@ИгроманРоман-н2ш array это указатель, который указывает на первую ячейку свободной памяти, при ее выделении под массив. Если он равен nullptr, то тогда обращаться к памяти нельзя, так как она не выделилась и указатель нулевой

  • @ДмитрийХрипков-я7л

    А что будет, если массив должен будет расшириться, но "упрется" в другие данные. Переместится?

    • @kadencode5347
      @kadencode5347 2 роки тому

      Не совсем, значения массива в памяти идут по порядку, поэтому память выделяется так, чтобы массив никуда не уперся.

  • @артурайдаров-л6е
    @артурайдаров-л6е 7 років тому

    А можно урок про нахождение строки в подстроке

    • @SimpleCodeIT
      @SimpleCodeIT  7 років тому

      Когда дойдём к изучению строк.

  • @simongreyse4171
    @simongreyse4171 5 років тому +1

    я не понял: что хорошего в том, что программисту самому нужно *_каждый раз_* делать эту процедуру с памятью, если это нужно делать обязательно каждый раз?
    это ведь хорошо и удобно что в Java и С# это делается автоматически

    • @assasinfil
      @assasinfil 5 років тому +4

      Потому что язык достаточно низкоуровневый и тут почти все нужно делать вручную, это делается для максимальной производительности

    • @ameliepick4772
      @ameliepick4772 5 років тому +8

      Высокоуровневые языки - много функций для разных целей, мало производительности.
      Низкоуровневые - почти что отсутствие готовых функций, высокая производительность.
      Если взять тот же C# то можно убедиться, что сборка мусора занимает много времени. На самом деле причин довольно много, но все они сводятся к одной - очень большое количество выделений памяти.

    • @TheWladberlin
      @TheWladberlin 5 років тому +2

      Что значит "делать каждый раз"? Просто один раз позаботься, напиши правильный код.

    • @roy.betty.replicantnexus-6871
      @roy.betty.replicantnexus-6871 Рік тому +2

      За лёгкость в использовании вы платите размером и производительностью своих программ. В C++ есть варианты использования механизмов автоматического выделения памяти и работы сборщиков мусора, их можно использовать, но, если вы аккуратно пишете код, следя за областью видимости требуемых объектов, то проблем нет изначально. Сборщики мусора - для лентяев и неаккуратных программистов... ну или для тех, кто пишет небольшие программы, не заботясь о аппаратном обеспечении. Но, надо понимать, что за всё надо платить. Сборщики мусора - не волшебные эльфы, они требуют ресурсов для своей работы (процессорного времени и памяти), и да и "подметают" с задержкой.
      В C++ вы можете не использовать сборщики мусора, освобождая память сами. Получите более быструю программу, занимающую меньше места.
      Да, и потому квалификация программистов на таких языках как C++ требуется выше. Тут надо понимать, как всё на самом деле работает, а интерпретаторы высокого уровня очень многое "прячут под капотом".

  • @user-go1dz6zx6p
    @user-go1dz6zx6p 5 років тому

    ого, то есть вообще на целом компьютере памяти со временем будет становиться все меньше и меньше из-за потерянных адресов??

    • @BadDanFeeds
      @BadDanFeeds 5 років тому +10

      Нет конечно. Операционная система умеет сама очищать ОЗУ. Более того, ОЗУ на то и есть "оперативная" - при каждом выключении компьютера она практически полностью очищается (остаётся только очень малая часть информации, помогающая системе запуститься), а уже при включении и запуске системы, когда прогружаются необходимые для работы службы и процессы и разные программы в автозагрузке, оперативная память по-новой заполняется. А сами программы, как и сама ОС, как я уже писал выше, занимают ОЗУ только при работе, и при завершении процессов программы память снова высвобождается.

  • @qouk9406
    @qouk9406 2 роки тому

    Здравствуйте! Скажите, пожалуйста: я правильно понимаю что даже если я закрою Visual studio, то весь этот мусор по прежнему останется в памяти? Перезагрузка ПК поможет в таком случае? (Тупой вопрос, понимаю)

    • @Абобус-т3з
      @Абобус-т3з 2 роки тому

      Да, останется.

    • @infinity-w
      @infinity-w Рік тому +2

      Мусор очистится если закрыть приложение. Если не закрывать и не чистить - вся система может зависнуть.

    • @qouk9406
      @qouk9406 Рік тому

      @@infinity-w Благодарю!

  • @ДмитрийКрасовский-б6р

    А почему в С# как в более устарелом языке есть функция по очистке памяти, а в C++ как в более новом языке нет ?

    • @GNDiurd
      @GNDiurd Рік тому +2

      Потому что C# создали в период с 1998 по 2001, а C++ был создан в начале 1980ых.

  • @frozenlight5829
    @frozenlight5829 3 роки тому

    Так а что же всё таки конкретно случится если закончится вся оперативная память??

    • @symbol4572
      @symbol4572 3 роки тому

      Попробуй это и ты все поймешь:
      while (1)
      {
      int *pa = new int [999];
      }

    • @svvonline1
      @svvonline1 Рік тому

      Программа сгенерирует исключение std::bad_alloc (std::bad_alloc exception). Если его перехватить и обработать, то программа будет работать дальше, если этого не сделать, то программа завершит работу с ошибкой выделения памяти. Тут корректнее говорить не про всю оперативную память, а про память в "куче" (heap).

  • @ЭдКалумнуз
    @ЭдКалумнуз 3 роки тому

    Учился по справочнику и теперь понимаю свою ошибку

  • @mikesteinar2713
    @mikesteinar2713 4 роки тому +3

    Мені потроху стає страшно.

  • @Viamsupervadetvadens
    @Viamsupervadetvadens 6 років тому

    up

  • @ПавелВасильев-я9з
    @ПавелВасильев-я9з 6 років тому

    Можешь немного рассказать о visual c++ (VC)? СПС

  • @olexayko2499
    @olexayko2499 6 років тому

    9:40 это даже после закрытия программы не очищается мусорные данные?

    • @Sardorkun
      @Sardorkun 6 років тому

      Очищаются, только после закрытия)

    • @BadDanFeeds
      @BadDanFeeds 5 років тому +2

      Я уже ответил на подобный вопрос Тимофею Герасимчик
      у, посмотрите выше ^. Там я доходчиво (надеюсь) объяснил.

    • @TGrod
      @TGrod 4 роки тому

      @@BadDanFeeds он удалил походу коментарий, так как я не нашёл даже такого человека в коментариях

    • @Werner_Spirit
      @Werner_Spirit 4 роки тому

      @@TGrod видимо.

    • @kadencode5347
      @kadencode5347 2 роки тому

      @@TGrod не удалил

  • @sunmaxplay6491
    @sunmaxplay6491 3 роки тому

    а после перезагрузки пк утечка останется?

    • @АртурГрабалин-ю6х
      @АртурГрабалин-ю6х 3 роки тому

      Слышал есть утилиты, который находят и устраняют утечки памяти

    • @sunmaxplay6491
      @sunmaxplay6491 3 роки тому

      @@АртурГрабалин-ю6х Хех) Во время) Но спасибо

    • @kadencode5347
      @kadencode5347 2 роки тому

      @@sunmaxplay6491 нет, память очищается после перезагрузки ПК.

  • @shaa8193
    @shaa8193 6 років тому

    то есть вон та чать в оперативке, которая справа, это ДБ?

    • @TheWladberlin
      @TheWladberlin 5 років тому

      Это просто выделенная память, в том числе и для ДБ

  • @47syorha52
    @47syorha52 4 роки тому +1

    Как я понял железо внизу, программист вверху

  • @hollowsamurai1763
    @hollowsamurai1763 4 роки тому +1

    Ахуеть,Елена Дмитровна спасиб за этот видеоурок 20 века черного цвета

  • @Joker-vl9fn
    @Joker-vl9fn 3 роки тому +1

    Челсі чемпіон

  • @themariogames5600
    @themariogames5600 2 роки тому +1

    Мотоцикл поехал

  • @Sooderone
    @Sooderone 4 місяці тому

    🧠

  • @ЕвгенийБорисов-е1ч
    @ЕвгенийБорисов-е1ч 5 років тому

    Значит ассемблер нехуже с++, изза того что он самый низкоуровневый - но писать я на нём небуду

  • @arvgo41
    @arvgo41 Рік тому

    Не совсем правильно объяснил что значат уровни языка, Уровни это уровни абстракции, если речь идет о памяти, ты абстрагируешься от реализации работы с памятью.

  • @ГражданинРоссии-я3б

    X

  • @viktort9326
    @viktort9326 4 роки тому +2

    Я бы сказал, что как раз С++ более высокоуровневый так как требует больше знаний и ответственности. Также даёт возможность не зависеть от среды разработки и работать при ограниченных ресурсах по железу! Чего уже там говорить про ассемблер :)

  • @ВладОся-з7ь
    @ВладОся-з7ь Рік тому

    Это ужас , вообще не раскалывается суть зачем нужна куча . В дальнейшем если вы будете писать код на с++ не изучив что такое стэк а что такое куча , у вас будет куча ошибок и вы даже не будите знать от куда они .

    • @C2H5OHH
      @C2H5OHH Рік тому

      Научись писать на русском языке, прежде чем иметь право что-то вякать!

  • @lost3575
    @lost3575 7 років тому

    Спасибо за урок!Но я не согласен с тем,что чем меньше контроль и возможностей самой программы меньше тем она ниже уровнем!Уж извините,но я так и не понял почему c++ является низкоуровневой.

    • @SimpleCodeIT
      @SimpleCodeIT  7 років тому +12

      Я имел ввиду совсем противоположное и специально в видео сделал на этом акцент. Посмотрите внимательней. А язык тем более низкоуровневый чем больше даёт возможностей контроля над системными и аппаратными ресурсами.

    • @lost3575
      @lost3575 7 років тому

      спасибо,теперь понятно!

    • @Sardorkun
      @Sardorkun 6 років тому +1

      Тои есть низкоуровневый - лучше чем высокоуровневый?

    • @gamerov3180
      @gamerov3180 6 років тому

      Под низкоуровневым он, скорее всего, имел ввиду, для людей с низким уровнем навыков. То есть на нем легче программировать.

    • @Sardorkun
      @Sardorkun 6 років тому

      Никита Швенк лол, ты рофлишь? Он же ответил, что низкоуровневый - наоборот хорошо. И низкоуровневый - не связан с навыками, если ты не криворукий.И откуда ты взял, что на нём легко программировать? Вот ты попробуй написать LogIn и Register

  • @Ms001man
    @Ms001man 5 років тому +1

    Спасибо за урок!

  • @AA-un4so
    @AA-un4so Рік тому

    Спасибо!

  • @xvid6041
    @xvid6041 4 роки тому

    Спасибо

  • @yajurveda6
    @yajurveda6 5 років тому +1

    Спасибо!