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

แชร์
ฝัง
  • เผยแพร่เมื่อ 29 ม.ค. 2025

ความคิดเห็น • 106

  • @namename2031
    @namename2031 3 ปีที่แล้ว +113

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

    • @realfootball338
      @realfootball338 2 ปีที่แล้ว +1

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

    • @Арт1234-с3г
      @Арт1234-с3г 2 ปีที่แล้ว +1

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

    • @deathnote5924
      @deathnote5924 ปีที่แล้ว +1

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

    • @eclipse9925
      @eclipse9925 ปีที่แล้ว

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

    • @game-maker258
      @game-maker258 ปีที่แล้ว +1

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

  • @rostislavtelitsin828
    @rostislavtelitsin828 ปีที่แล้ว +19

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

    • @Kisele4check
      @Kisele4check 8 หลายเดือนก่อน

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

  • @kslmPtr
    @kslmPtr 2 ปีที่แล้ว +8

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

  • @RuslanGolovinskiigolxzn
    @RuslanGolovinskiigolxzn 5 หลายเดือนก่อน +1

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

  • @happy4451
    @happy4451 3 หลายเดือนก่อน

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

  • @eclipse9925
    @eclipse9925 ปีที่แล้ว +3

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

    • @alienhazzard7201
      @alienhazzard7201 2 หลายเดือนก่อน

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

    • @eclipse9925
      @eclipse9925 2 หลายเดือนก่อน +1

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

  • @yevhennesterenko5724
    @yevhennesterenko5724 2 ปีที่แล้ว

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

  • @svetoslavzamotaev2725
    @svetoslavzamotaev2725 2 ปีที่แล้ว +1

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

  • @ДаниилНосиков-м3ч
    @ДаниилНосиков-м3ч ปีที่แล้ว

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

  • @sergeysergeev1564
    @sergeysergeev1564 2 ปีที่แล้ว +3

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

  • @BoddenDeni
    @BoddenDeni ปีที่แล้ว

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

  • @ilyuhagg8546
    @ilyuhagg8546 2 ปีที่แล้ว

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

  • @ВладОся-з7ь
    @ВладОся-з7ь ปีที่แล้ว +1

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

  • @AbdibekNasanbekov-rh6ov
    @AbdibekNasanbekov-rh6ov 5 หลายเดือนก่อน

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

  • @orcengineer
    @orcengineer 11 หลายเดือนก่อน

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

  • @user-cg9eq
    @user-cg9eq 5 หลายเดือนก่อน

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

  • @Desotterro
    @Desotterro 3 ปีที่แล้ว +5

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

  • @РусланКарнеенко
    @РусланКарнеенко ปีที่แล้ว

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

  • @ARproj
    @ARproj 2 ปีที่แล้ว +3

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

  • @tsorion
    @tsorion 2 ปีที่แล้ว

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

  • @zeleningg
    @zeleningg 9 หลายเดือนก่อน

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

  • @MuslimLeaderDev
    @MuslimLeaderDev 2 ปีที่แล้ว

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

  • @igorm6585
    @igorm6585 ปีที่แล้ว +1

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

  • @zloy_ax8496
    @zloy_ax8496 2 หลายเดือนก่อน

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

  • @Ice.Rezzet
    @Ice.Rezzet 11 วันที่ผ่านมา

    Программа начинает выполнение с функции точки входа. Точка входа задается параметром линковщика /ENTRY. По умолчанию main

  • @РоманФадеев-ф4г
    @РоманФадеев-ф4г ปีที่แล้ว

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

  • @kirillshibalenkov4979
    @kirillshibalenkov4979 ปีที่แล้ว

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

  • @lordibelieve
    @lordibelieve 5 หลายเดือนก่อน

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

  • @olessiverskiy357
    @olessiverskiy357 ปีที่แล้ว

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

    • @Whiatley
      @Whiatley ปีที่แล้ว

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

  • @nano28950
    @nano28950 ปีที่แล้ว

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

  • @ArtyomDzagaryan
    @ArtyomDzagaryan ปีที่แล้ว

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

  • @skotch_izolentovich
    @skotch_izolentovich ปีที่แล้ว

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

  • @bulba1995
    @bulba1995 ปีที่แล้ว

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

  • @igorm6585
    @igorm6585 ปีที่แล้ว +1

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

  • @dmitriyprosolovich9180
    @dmitriyprosolovich9180 2 ปีที่แล้ว

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

  • @Maggistr44
    @Maggistr44 7 หลายเดือนก่อน

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

  • @kyctuk7172
    @kyctuk7172 2 ปีที่แล้ว +2

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

  • @igoruxa
    @igoruxa ปีที่แล้ว +1

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

  • @LeonZaaa
    @LeonZaaa 3 ปีที่แล้ว

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

  • @yehortverytinov5478
    @yehortverytinov5478 ปีที่แล้ว +1

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

  • @CBATEP
    @CBATEP 10 หลายเดือนก่อน

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

  • @ПавелГолубев-п8о
    @ПавелГолубев-п8о 2 ปีที่แล้ว +1

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

  • @contamination3084
    @contamination3084 3 ปีที่แล้ว

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

  • @ВладимирМалод
    @ВладимирМалод ปีที่แล้ว

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

  • @usernamer519
    @usernamer519 2 ปีที่แล้ว

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

  • @novalue2741
    @novalue2741 หลายเดือนก่อน

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

  • @dmphxzrche288
    @dmphxzrche288 2 หลายเดือนก่อน

    Гений 🤷‍♀️

  • @nucleus.accumbens1234
    @nucleus.accumbens1234 7 หลายเดือนก่อน

    🛐🛐🛐

  • @SAM-t6k7s
    @SAM-t6k7s ปีที่แล้ว

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

  • @Александр-й2в2о
    @Александр-й2в2о 7 หลายเดือนก่อน

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

  • @genrihkutz
    @genrihkutz 10 หลายเดือนก่อน

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

  • @vladimirmashkov
    @vladimirmashkov ปีที่แล้ว

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

  • @BarVados
    @BarVados 3 ปีที่แล้ว +2

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

    • @КириллГусарев-р5х
      @КириллГусарев-р5х 2 ปีที่แล้ว

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

  • @rtotwmoclew
    @rtotwmoclew 2 ปีที่แล้ว

    Спасибо

  • @WhiteZSY
    @WhiteZSY 3 ปีที่แล้ว +1

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

  • @qwkanal
    @qwkanal 2 หลายเดือนก่อน

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

  • @ДенисЧеб-м6ф
    @ДенисЧеб-м6ф 3 ปีที่แล้ว

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

  • @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 2 หลายเดือนก่อน

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

  • @mod3528
    @mod3528 3 ปีที่แล้ว +1

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

    • @softwaredevelopment884
      @softwaredevelopment884  3 ปีที่แล้ว +1

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

  • @artick5456
    @artick5456 2 ปีที่แล้ว

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

    • @softwaredevelopment884
      @softwaredevelopment884  2 ปีที่แล้ว

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

    • @artick5456
      @artick5456 2 ปีที่แล้ว

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

  • @michaeljordan1283
    @michaeljordan1283 2 ปีที่แล้ว

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

    • @Alamat0
      @Alamat0 ปีที่แล้ว

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

  • @ВладиславГришин-ш7ш
    @ВладиславГришин-ш7ш 11 หลายเดือนก่อน +1

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

  • @ДарюшСоколов
    @ДарюшСоколов 3 ปีที่แล้ว +2

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

    • @softwaredevelopment884
      @softwaredevelopment884  3 ปีที่แล้ว +2

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

  • @davidola1814
    @davidola1814 หลายเดือนก่อน

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

  • @picapicali6261
    @picapicali6261 ปีที่แล้ว

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

    • @Grigwee
      @Grigwee ปีที่แล้ว

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

  • @goshagotye
    @goshagotye 5 หลายเดือนก่อน

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

  • @WhiteZSY
    @WhiteZSY 3 ปีที่แล้ว +1

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

  • @Kolemag
    @Kolemag 6 หลายเดือนก่อน

    23:49 :D

  • @valetet
    @valetet 3 ปีที่แล้ว

    в избранное!

  • @AnarchySane
    @AnarchySane 9 หลายเดือนก่อน

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

  • @rdragon587
    @rdragon587 ปีที่แล้ว

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

  • @Goidich228
    @Goidich228 9 หลายเดือนก่อน

    Спасибо