Уроки С++ Стек, Куча, Указатели (11)

Поділитися
Вставка
  • Опубліковано 18 гру 2024

КОМЕНТАРІ • 102

  • @namename2031
    @namename2031 3 роки тому +112

    Алилуя. Наконец то видео о Стеке нашёл. Другие только про тарелки рассказывают, то что их надо одну на другую класть.

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

      Ну прикинь. Давай донатить автора чтоб Он делал таких видосов еще больше

    • @Арт1234-с3г
      @Арт1234-с3г 2 роки тому +1

      Я так понял что и стэк и куча на ОЗУ крутятся, почему тогда все ОЗУ под стэк не отдать, было бы проще!?

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

      ​А куда кучу девать

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

      только что такой же коммент хотел написать

    • @game-maker258
      @game-maker258 Рік тому +1

      ​@@Арт1234-с3гТак на компьютере располагается не только твоя программа, их там там дофига, а все они используют одну и ту же ОЗУ, если всю память ОЗУ выделить под твою программу, то для остальных не останется места

  • @rostislavtelitsin828
    @rostislavtelitsin828 Рік тому +18

    «После этого многие люди перестают изучать…» - очень смешной момент, сегодня у меня будет отличное настроение)))

    • @Kisele4check
      @Kisele4check 7 місяців тому

      Тоже смеялся с этого😅

  • @kslmPtr
    @kslmPtr 2 роки тому +8

    Сам пишу на C#, но кажется я только что понял, что не понимал годами в плюсах. Спасибо !

  • @eclipse9925
    @eclipse9925 Рік тому +3

    наконец-то адекватное видео, ни тарелок, не рекурсии с факториалом, а именно работа ОЗУ

    • @alienhazzard7201
      @alienhazzard7201 Місяць тому

      А тарелки чем не нравятся? Можно еще взять рожок автомата.

    • @eclipse9925
      @eclipse9925 Місяць тому

      @alienhazzard7201 тарелки разбиться могут

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

    Изучаю си. Очень помог в понимании урок по си++))) от души, мужик)

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

    Прекраснейшее объяснение ! Я понял все !

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

    Лучшее объяснения стека и указателей.

  • @happy4451
    @happy4451 Місяць тому

    Это лучшее объяснение!!! Спасибо!

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

    Спасибо большое за качество и простоту подачи .

  • @AbdibekNasanbekov-rh6ov
    @AbdibekNasanbekov-rh6ov 4 місяці тому

    Прекрасный урок. Надо добавить что идея создания указателей пришла в голову создателей процессоров из необходимости и желания повышения скорости работы процессора. С указателями программа начинает работать быстрее чем без них. Здесь надо выбирать между удобством и скоростью. Если нужна скорость программы то пишете на обычном Си но долго и нудно с указанием значений регистров. А если хотите комфорт и удобство при написании то пишите на питоне джаве но зато программа работает в полтора или два раза медленнее. Си плюс плюс это компромисс между удобством и скоростью.

  • @ДаниилНосиков-м3ч

    Наконец-то нормальный, понятный видос по работой с памятью, спасибо больше!!!

  • @orcengineer
    @orcengineer 10 місяців тому

    Спасибо большое автору за объяснение!!!!!!

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

    Отличный урок! Детально, наглядно и доходчиво объясняете. Спасибо за ваш труд!

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

    Дуже круто пояснюєте - дяка ))) Вчу java, але після відоса прям захотілося більше про плюси дізнатись

  • @RuslanGolovinskiigolxzn
    @RuslanGolovinskiigolxzn 3 місяці тому +1

    Спасибо автору за материал!
    Однако хотел бы поправить неточность. Стек расширяется на встречу сегменту кода программы, начиная с верхнего адреса процесса, например 0x00EFFFFF, и когда происходит выделение памяти переменной на стеке, мы уменшаем значение stack pointer:
    stack_pointer -= sizeof(int32_t); // примерно так
    Также все это добро регулируется самой программой, а не операционной системой. ОС только следит, чтобы все было в рамках дозволенного.
    В любом случае, спасибо!

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

    Спасибо за видео автору, желаю вам здоровья.

  • @РоманФадеев-ф4г

    очень хорошо объясняешь, спасибо

  • @user-cg9eq
    @user-cg9eq 4 місяці тому

    Самое лучшее видео! Спасибо вам❤❤❤

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

    Отличное объяснение. Спасибо

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

    Спасибо! Очень понятно и доходчиво. Узнал что-то новое )

  • @Maggistr44
    @Maggistr44 6 місяців тому

    Классное видео. Спасибо.)
    Подпишусь чтобы не потерять канал.)

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

    Очень полезный видео ролик, побольше бы таких ❤

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

    Моё почтение, хорошее видео.

  • @zeleningg
    @zeleningg 7 місяців тому

    Лучший ролик про указатели .

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

    Вот это классное объяснение, рекомендую!

  • @Desotterro
    @Desotterro 3 роки тому +5

    было бы круто про умные указатели послушать, а то вроде понимаю как ими пользоваться, но что-то не то получается
    автору удачи в продвижении, все приятно и понятно

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

    очень круто что есть такие обяснения

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

    Ты крутой, просто, все понятно, можна прям под еду смотреть и все понятно)))

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

    6:48 - "Так как выделить память (на стеке) занимает некоторые инструкции у процессора, так же и удаление занимает некоторые инструкции" - а что это за инструкция такая "выделить память под переменную в стеке" ? Я всегда считал что используются инструкции с заданными смещениями адреса типа "mov eax, [ebp-8]" и "add [ebp-4], eax "

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

    Невероятный урок!

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

    лучшее объяснение, спасибо

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

    Интересный подход в подаче материала, по видимому рассчитан и на начинающий уровень, но есть аспекты которые упускают даже в толстых книгах. Поскольку уже знаю это то мне трудно судить будет ли легче новичку это понять. (по тем-же указателям обычно по несколько страниц тренируются на том-же стеке в динамическую память не лезут.). Слайды кстати приятные и понятные.

  • @igoruxa
    @igoruxa 10 місяців тому +1

    7:00 Переменная из стека не может удалиться "отложенно/когда-то". Похоже, что у вас инструкция "if (true)" тоже взяла для своих нужд 4 байта стека.

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

    Прекрасное объяснение

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

    вау, наконец-то я понял. СПАСИБО

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

    За доходчивость в объяснении большой лайк. Но есть некоторая неточность в комментариях кода на 6:00+... Переменная "х" не заняла область памяти переменной "q" не из-за многоядерности процессора, а из-за того, что она в одной области видимости с переменной "а". А так, молодец!

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

      А почему так.?

  • @zloy_ax8496
    @zloy_ax8496 Місяць тому

    Просто Агонь 👍

  • @Александр-й2в2о
    @Александр-й2в2о 6 місяців тому

    Хороший канал!

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

    Спасибо, очень доходчиво!

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

    7:28 - "Закончилась инструкция по удалению (переменной) q из памяти". И что это за инструкция такая "удалить память на стеке" ?

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

    бро, лучшее видео по стеку в плюсах. спасибо!!

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

    мужик, ты лучший!

  • @dmphxzrche288
    @dmphxzrche288 Місяць тому

    Гений 🤷‍♀️

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

    Почему указателю нужен тип, ведь это всегда адрес, т.е. число, и можно было бы предположить что int64 хватит всем?
    Потому что у структур и объектов нет символа окончания, как у строк, таким образом тип указателя это способ получить размер данных и, следовательно, адрес конца данных для операции перехода к ним (разименование)
    Хотелось бы так же разбор самих операций перехода, которые бы показали разницу между указателями и ссылками

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

    В golang есть указатели и это прекрасно.

  • @ПавелГолубев-п8о
    @ПавелГолубев-п8о 2 роки тому +1

    Спасибо, полезный контент!
    А как можно узнать размер стека в памяти для своей машины?

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

    12:11 разве мы *ой просто не говорим, что при компиляции, для использования этой переменной мы сперва получим её значение, получим значение по адресу последнего, и будем работать с ним, то есть то, на хипели оно - нет разницы?

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

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

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

    Почему у Вас на компьютере стек растёт вверх? Должно же поидее быть наоборот, вниз. У вас какая-то редкая для архитектура процессора?

    • @КириллГусарев-р5х
      @КириллГусарев-р5х 2 роки тому

      Принято растить стек снизу вверх, если это просто визуализация, чтобы было понятнее

  • @qwkanal
    @qwkanal 27 днів тому

    Отличное чувство смотреть про стек и память с++ после рвоты с++ структур(хз почему?)

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

    Ага, помню как на паскале нам дали задачу работать с массивами 10000 на 10000 вроде, и программа не запускалась. Пришлось копать информацию по указателям.

  • @ДарюшСоколов
    @ДарюшСоколов 3 роки тому +2

    Сделайте пожалуйста подробную работу архитектуру фон неймана

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

      Возможно в будущем еще сделаю но сейчас в планах нету, хочу доделать последовательно этот курс

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

    И Стек и Куча оба находятся в оперативной памяти? Это строгое правило?
    А что ограничивает размеры Стека? Почему он такой ущемлённый постоянно?
    Казалось бы дай Стеку много места и не надо никакой кучи.

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

      В этом контексте стек и куча это две области в оперативной памяти, которые выделяет ОС при выполнении программы. Конфигурируется также в ОС. Вот здесь описан ответ: qastack.ru/software/207386/how-are-the-size-of-the-stack-and-heap-limited-by-the-os

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

      Память в стеке определяется на этапе компиляции программы, но программа может работать с файлами, размер которых ещё не известен. Было бы глупо написать программу, которая будет открывать фотки ограниченного программистом размера. Поэтому для возможности работы с любыми данными нужен механизм, который будет управлять выделением памяти для программы. Этот механизм реализует операционная система.

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

      Размеры стека ограничивает операционная система, но есть средства его увеличивать при необходимости. Почему ущемленный? Потому что не разумно выделять каждой программе огромный стек. Раньше это было актуально, так как оперативка исчислялась буквально в мегабайтах. А сейчас это актуально, так как на современных ПК одновременно запущена масса процессов, большинство в фоне. Если всем им выделять огромный стек, то память будет расходоваться не рационально. Ведь занятое место под стек одной программы не может использоваться другими программами, даже если он свободен на 99%. Куча используется совместно всеми процессами и там такой проблемы нет. По идее, если у тебя на компе установлено 32-64 Гига, то тебе по барабану, какой там стек будет, пусть даже 50 или 100Мб. Но операционки пишутся не под тебя и не под твой конкретный комп. Их могут поставить и на машину всего с парой гигов оперативки и там уже размер стека будет критичен.

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

      @@phat80 разве куча используется совместно со всеми? А как же виртуальное адресное пространство? Я читал что для каждой программы выделяется свой кусочек кучи и по ходу работы может расширяться

    • @alienhazzard7201
      @alienhazzard7201 Місяць тому

      @AnderX003
      Смешались в кучу кони, люди…

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

    👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍

  • @novalue2741
    @novalue2741 17 днів тому

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

  • @ВладимирМалод
    @ВладимирМалод Рік тому

    Вы не предоставляете обучение под вашим руководством?

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

    Спасибо

  • @genrihkutz
    @genrihkutz 8 місяців тому

    а ссылки где хранятся ? на стеке или на куче ?

  • @ВладиславГришин-ш7ш
    @ВладиславГришин-ш7ш 10 місяців тому +1

    стек он же в оперативке. почему же в отношении его применено слово быстрый? стек это же не КЭШ процессора

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

    Размер player 8 потому что main возвращает int?

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

      Нет, размер указателя на player 8 байт(тоесть 64 бита) так как система на компе 64 битная

  • @ДенисЧеб-м6ф
    @ДенисЧеб-м6ф 3 роки тому

    А в си также устроенно? Там тоже поинтеры находятся в хипе или там все на стеке лежит?

  • @nucleus.accumbens1234
    @nucleus.accumbens1234 5 місяців тому

    🛐🛐🛐

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

    если на 1:22 посмотреть прищурившись в нижний правый угол, там будет флаг

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

      У меня не получается увидеть его

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

    Не понятно только одно, зачем нужен медленный heap если если и stack и heap используют RAM, почему бы не использовать быстрый stack на всю выделенную память, я то понимаю что плюс кучи в том что её можно освобождать, по этому вопрос в том почему нельзя сделать освобождение памяти из стека, тогда он станет таким же медленным как куча, я полагаю... ?

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

      А это я попытаюсь объяснить в видео о структурах данных и алгоритмах, если в двух словах то в стеке элементы идут один за другим и если тебе нужен например первый елемент, тот который пришел первый, тебе нужно вытянуть весь стек, то есть сама структура данных для других целей, если дойдут руки то будут видео о сложности алгоритмов там все станет понятней

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

      @@softwaredevelopment884 Понятно, спасибо, нужно глянуть потом это видео.

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

    Видео - да, замечательное, но лучше бы, конечно, говорить про память на проекцию языка Си. С выделением и освобождением памяти, как оно есть, а не через обертки new, delete. Ну это чисто мое имхо.

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

    И на Palm OS Все через кучу.

  • @davidola1814
    @davidola1814 5 днів тому

    легенда я не оч понимал как работает сама куча со стеком все норм но куча чото полурак полу чо

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

    в избранное!

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

    23:49 :D

  • @AnarchySane
    @AnarchySane 8 місяців тому

    Да нунахуй хорошо, что я джаваскриптизер. 😂

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

    Heap тоже ограничен

  • @Goidich228
    @Goidich228 8 місяців тому

    Спасибо