@@SimpleCodeIT , pa.delete - удаляет данные которые находились в выделенной new памяти, но сама память выделенная под указатель pa осталась ? Сам указатель (в данном случае 4 байта ?) тоже надо удалять ?
@@SimpleCodeIT Теперь меня мучает вопрос, по поводу окошка "Средства диагностики" Можно ли там посмотреть что происходит с памятью во время отладки? И второй как эти панели нормально настроить? У меня они прыгают как хотят =)
Лучшие уроки, которые я видел! Сделайте урок на тему разницы между new и malloc, delete и free. И еще если можно как правильно настраивать стек и кучу для программы. Спасибо большое за такие классные уроки!
Сергей спасибо Вам за уроки, это даже хорошо, что С++ не убирает оставшийся мусор... Сам вводишь нужный объём оперативной памяти и сам от всего избавляешься. Может кому-то это и не нравится, а по мне - это даже к лучшему. Чувствуется, что человек - создатель компьютерной сферы и её хозяин...
Как мне кажется дойдя до сюда вам уже хватит знаний написать какой-то проект чтобы закрепить все приведушие уроки как пример я написал крестики нолики для 2-их каждый ходит по очереди, это заняло 200 строк кода
Доброго времени суток, Сергей) Сейчас просматриваю Ваш курс (невероятно крутой). Добрался до этого урока. Есть некоторое сомнение в Вашем объяснении касательно кучи. У Вас сказано, что куча лежит в оперативе (вне процесса программы), а доступ к ней осуществляется из процесса (посредством указателей). Здесь немного не так. Куча - это область данных внутри процесса и при динамическом выделении памяти мы занимаем как раз таки эту область. Если не хватает кучи, выделенной ОС на процесс, ОС предоставляет ещё кучи(я так понимаю за счёт расширения процесса). Если ошибаюсь, поправьте пожалуйста. p.s. Большой фанат данного курса=)))
0:38 - Как работает оперативная память при объявлении переменной? 2:55 - Как запросить ячейку в оперативной памяти указателем? 7:23 - Как удалить указатель?
удаляем не указатель, а данные в запрошенной ячейке оперативной памяти, на которую он указывает. Сергей же добавил, что указатель продолжает "видеть" адрес ячейки
Большое спасибо за всю серию уроков в целом и за этот урок в частности! Плейлист все еще по прежнему актуален в 2023! году. Запускал +- что-то похожее в своей Visual Studio Code. Пока что озадачен тем, почему после удаления с помощью оператора delete указателя и последующего вывода адреса, на который он ссылается и значения, которое лежит по этому адресу в консоль выводится тот же адрес и то же самое значение, получаемое при разыменовании указателя, которые были ДО удаления указателя (работаю на ОС Windows 10). Точнее сказать, понятно почему адрес не поменялся, но почему вместо 10 не появился мусор (если что я не забыл скомпилировать заново программку)?
@@bobzihno8721возможно оно работает немного не так как мы думаем, то есть: Не сразу удаляется значение по адресу delete просто открывает доступ для записи по этому адресу всем другим прогам и процессам, значение остаётся по этому адресу, и его уже может перезаписать любая другая программа А до delete по этому адресу другие проги не имеют доступ туда, он зарезервирован нами
Учу язык Си с нуля. Дошёл до динамического выделения памяти. В моём учебнике автор решил использовать оператор new вместо malloc. Автор написал что так будет удобнее. В статье про оператор new я так же прочитал что он имеет ряд приемуществ по сравнению с malloc. А с помощью ваших роликов я закрепил данный материал. Спасибо .
Здравствуйте дорогой учитель, я всегда смотрю ваши видео уроки по C++, вы всегда все четко и понятно объясняете, и я хотел бы спросить, для чего нужен библиотека time.h и чем он отличается от библиотеки ctime? И еще один вопрос: зачем нужен вывод "printf" в с++? и чем он отличается от cout?
Rocer shot во многом прав: Действительно, для использования стандартных библиотек C в C++ не нужно писать ".h" в имени файла (хотя можно), нужно добавлять в начало имени букву 'c'. И больше никаких отличий. Но вот по поводу "printf" и "scanf" в C++ у меня есть замечания. Опять же, тут как в случае с библиотеками: "printf" и "scanf" - это функции языка C, но в C++ их так же можно использовать, только у них есть некоторые отличия от "плюсовых" "cout" и "cin". Отличия как в функционале, так и в синтаксисе. Для простых задач, конечно, проще использовать "cout" и "cin", но вот если нам надо, например, задать количество выводимых цифр в вещественном числе, то "cout" тут не силён. Вот пример, нам нужно ввести вещественное число (допустим, это будет 15.26479), а затем вывести его в формате 0000.00, то есть добавить незначащие нули перед числом, а после запятой вывести две цифры: { double var; cin >> var; //в вводе числа нет ничего необычного, поэтому используем "cin" cout
@@BadDanFeeds это хорошо, что ты помогаешь другим.Тогда обьясни эту запись и по возможности напиши как её можно расписать *( *( p = new double* ) = new double ) = 2;
Это зависит от настроек SDL. Скорее всего у тебя по пути "ПРОЕКТ -> Свойства -> Свойства конфигурации -> C / C ++ -> Общие -> Проверки SDL " стоит Да (/sdl)
@@crackall1946 чувак, если захочет - сделает. Человек тебе бесплатно и максимально понятно объясняет темы, этого уже много. Хватит пользоваться добротой чужой
как в visual studio community сделать так, чтобы знак указателя *стояла ближе к названию переменной?? у меня наоборот и не могу найти как это изменить.
Обычный int выделяется внутри области памяти, занятой самой программой. Указатель же может ссылаться на ячейку, лежащую за пределами области памяти, занятой программой (поэтому и называется "динамическая" память, то есть вне области программы).
почему delete pa , а не *pa ??? *pa(10) -это же интовая переменная и она дожна удалятся, просто pa это адрес в памяти , значит должен был затерется адрес , а не значение ячейки 10
Сергей, здравствуйте! Не правильно понял задание дз но теперь уже страшно интересно: как сделать правильно шаблон и функцию которая меняет местами абсолютно два любых значения (например string и double) . Я пытался сделать template void foo(T1 &a, T2 &b, T3 *c = nullptr) { *c = a; a = b; b = *c; } но не даёт скомпилировать foo(a, b); , пишет что не хватает аргументов P.S.пробовал другие варианты тоже не получается (((
не удаётся запустить программу "адрес" не удаётся найти указанный файл. В релизе удалось разок запустить , но потом тоже самое начало писать. В чем причина, подскажете?
смотрю вторую неделю дошел до этого урока, началось то, что все время отвлекают, и совсем не остаётся времени, а след день хочется отдохнуть, боюсь так и интерес потеряю :( , это будет не хорошоо
Симпл код: C++ не имеет сборщика мусора и когда-то оперативная память просто закончится и наша программа просто помрёт Я, после того как это услышал: while (true) { new int; }
Никак. Большинство типичных ОС автоматически подчищают за процессом. Однако в общем случае никто этого не гарантирует. Вполне возможно, что на какой нибудь экзотической ОС произойдет утечка ресурсов.
int &X = *new int; X = 4; А как же такой пример? Как по мне он лучше.. Просто меня бы раздражало по кд писать *X что бы присвоить значение и так наверно код будет ещё более оптимизированнее с моим примером.. Правда это смотря какой код..
Сказано же, что выделяют обычно под массивы, а наши массивы и являются указателями, где звёздочки не нужны. К тому же ссылку нельзя переназначить для других целей, а указатель можно.
@@bogdns системе то все равно, что мы там храним, ей главное размер знать, а компилятору важно - он же следит, чтобы мы не путались в собственных переменных.
new int по факту создание динамического массива, delite для удаление данных с памяти - ты пишешь программу используя динамичны массив все закончилась его роль в каком то участке кода и ты переходишь к второму этапу или части кода и от что бы у тебя не было засраной памяти старыми данными ты пишешь delite, и делаешь дальше свои дела если не напишешь у тебя автоматом очистит когда закроешь программу, но это не вариант если ты работаешь в компании по созданию игр, потому что у тебя будет код не на 100-200 строчек а на тысячи по этому и объем памяти у тебя будет уходить на много больше по этому тебе прийдется не забывать писать delite что бы не сломать прогу и за не хватки памяти, как то так
По сути нужен для того чтобы, выделить память для какойто ресурсоемкой задачи. Либо в том месте программы, где заранее не знаешь сколько памяти надо, а потом по ходу выполнения уже выделить нужный объем. А делит чтобы эту память просто освободить, когда она уже не нужна.
Все зависит от программы которую пишешь. Ты пишешь чит типо Читэнжин. После отсеевания значений их надо гдето хранить. Ты же не знаешь сколько они займут памяти если хранить статически? Наверное нет. Поэтому ее проще выделить для конкретной задачи. Может и плохой пример, но как то так.
@@Kokurorokuko Это так скажем я привел пример для уже готового решения. Или например тебе надо сделать матрицу. А размер вводит пользователь. Соответсвено лучше выделить память динамически, чем писать костыли.
@@АртёмТ-ь5п я пишу на телефоне, хах... Поэтому мне не нужно писать селтлокал, а так проблема не решилась, извиняюсь, что такое долгое кд на ответ, перегорел на пол года, сейчас снова вспоминаю все. Вот оказался тут и смотрю мой комент)
Как я понял размер адреса это 4 байт, то есть адрес FFFFFFFF это придел (4 гб оперативки) А если у нас оперативки например 8гб, то какой адрес будет если все адреса до FFFFFFFF будут заняты?
Этими курсами вы сделали невероятный вклад в появление на свет всё большего и большего количества юных, и не очень программистов
Я начинал проходить курс с другом он уже с 14 курса он бросил ,а я до сих пор прохожу курс проходили почти 1 млн а теперь 131 тыс
Забыл, вернулся, вспомнил.
Тоже самое)))
Жизненно однако...
Спасибо большое.
Что бы я делал без ваших уроков)
Пожалуйста! =)
@@SimpleCodeIT , pa.delete - удаляет данные которые находились в выделенной new памяти, но сама память выделенная под указатель pa осталась ? Сам указатель (в данном случае 4 байта ?) тоже надо удалять ?
@@CaytoCatugawa если я не ошибаюсь, память под указатель, выделилась в функции main. После закрытия программы оно удалиться само
@@SimpleCodeIT Теперь меня мучает вопрос, по поводу окошка "Средства диагностики" Можно ли там посмотреть что происходит с памятью во время отладки? И второй как эти панели нормально настроить? У меня они прыгают как хотят =)
почему delete удаляет данные в хипе без операции разыменования - delete *pa; ?
С++ Делает из человека чистюлю.
В зависимости от человека может сделать и грязнулю))
Классный препод. Один из лучших. Объясняет все на практике и все понятно. Респект
Лучшие уроки, которые я видел! Сделайте урок на тему разницы между new и malloc, delete и free. И еще если можно как правильно настраивать стек и кучу для программы.
Спасибо большое за такие классные уроки!
malloc и calloc - это конструкции языка С. new - это конструкции языка С++. По сути они одну и ту же задачу выполняют
@@tmdan91 спасибо!
Сергей спасибо Вам за уроки, это даже хорошо, что С++ не убирает оставшийся мусор... Сам вводишь нужный объём оперативной памяти и сам от всего избавляешься. Может кому-то это и не нравится, а по мне - это даже к лучшему. Чувствуется, что человек - создатель компьютерной сферы и её хозяин...
Как мне кажется дойдя до сюда вам уже хватит знаний написать какой-то проект чтобы закрепить все приведушие уроки как пример я написал крестики нолики для 2-их каждый ходит по очереди, это заняло 200 строк кода
Доброго времени суток, Сергей) Сейчас просматриваю Ваш курс (невероятно крутой). Добрался до этого урока. Есть некоторое сомнение в Вашем объяснении касательно кучи. У Вас сказано, что куча лежит в оперативе (вне процесса программы), а доступ к ней осуществляется из процесса (посредством указателей). Здесь немного не так. Куча - это область данных внутри процесса и при динамическом выделении памяти мы занимаем как раз таки эту область. Если не хватает кучи, выделенной ОС на процесс, ОС предоставляет ещё кучи(я так понимаю за счёт расширения процесса). Если ошибаюсь, поправьте пожалуйста. p.s. Большой фанат данного курса=)))
Большое спасибо вам за урок и прекрасное пояснение, Сергей!
всё меньше людей прохот данный курс. Начинали с 700т, теперь 47т. Круто)
нам только лучше
@@indeec9538, интересное мнение) я ушёл с ~60. Решил продолжить книгами
@@jojopko_dev посоветуй киженции)
@@bocik2854 Согласен
@@jojopko_dev какие книги прочел?
Спасибо за отличные уроки!
скилл рисования растет с каждым уроком( ̄︶ ̄)↗
#new #delete #SimpleCode #урокипрограммирования
попробуй закинуть этот курс на платформу Stepik. Ты лучше объясняешь чем многие программисты из Яндекс, Computer Science Center и тд
Все участники этих курсов мечтают о таком преподавателе
простите, нужно ли использовать delete если я не использовал new, а только объявлял переменные ?
@@greatskydrake9531 не нужно
0:38 - Как работает оперативная память при объявлении переменной?
2:55 - Как запросить ячейку в оперативной памяти указателем?
7:23 - Как удалить указатель?
Спасибо
удаляем не указатель, а данные в запрошенной ячейке оперативной памяти, на которую он указывает. Сергей же добавил, что указатель продолжает "видеть" адрес ячейки
ОГРОМНЕЙШОЕ СПАСИБО👍
Большое спасибо за всю серию уроков в целом и за этот урок в частности! Плейлист все еще по прежнему актуален в 2023! году. Запускал +- что-то похожее в своей Visual Studio Code. Пока что озадачен тем, почему после удаления с помощью оператора delete указателя и последующего вывода адреса, на который он ссылается и значения, которое лежит по этому адресу в консоль выводится тот же адрес и то же самое значение, получаемое при разыменовании указателя, которые были ДО удаления указателя (работаю на ОС Windows 10). Точнее сказать, понятно почему адрес не поменялся, но почему вместо 10 не появился мусор (если что я не забыл скомпилировать заново программку)?
у меня такая же проблема, вы решили свою проблему? если да то поделитесь как
@@bobzihno8721возможно оно работает немного не так как мы думаем, то есть:
Не сразу удаляется значение по адресу
delete просто открывает доступ для записи по этому адресу всем другим прогам и процессам, значение остаётся по этому адресу, и его уже может перезаписать любая другая программа
А до delete по этому адресу другие проги не имеют доступ туда, он зарезервирован нами
Спасибо Вам большое за такие понятные,и крутые уроки!
Спасибо.
Учу язык Си с нуля. Дошёл до динамического выделения памяти. В моём учебнике автор решил использовать оператор new вместо malloc. Автор написал что так будет удобнее. В статье про оператор new я так же прочитал что он имеет ряд приемуществ по сравнению с malloc. А с помощью ваших роликов я закрепил данный материал. Спасибо .
Как успехи?:D
@@Imgui_seller ,а как твои успехи?
@@ТупаБатя а как твои?
ну а твои то как успехи?@@frazismert3071
@@frazismert3071а твои то как?
Спасибо, друг
Благодарю. Прекрасная работа
Учу с++ , помимо книг огромные шаги в обучении.
Спасибо :)
Привет ,какие книги читаешь по плюсам? Я чуть читал "Изучаем с++ через программирование игр"
Cпасибо!🥰
Спасибо большое за ваш труд!)
Спасибо за урок.
Огромное спасибо!!!!!!!!!!!!
Во время исполнения программы, когда исполнение доходит до строчки удаления, происходит краш программы
Спасибо большое за ваш труд, шикарный контент.
спасибо помогло
Спасибо.)
Серёжа, ты самый крутой!!
Спасибо за урок!
Спасибо. Принял. Помогает.
Всё здорово. Повествование на 5 с +. Но пока совершенно не понятно как применить накопленные знания за 50+ уроков.
Классно! Сделай видео про volatile.
Спасибо!
очень классные видео ,как будут деньги обезательно кину на печеньку
Здравствуйте дорогой учитель, я всегда смотрю ваши видео уроки по C++, вы всегда все четко и понятно объясняете, и я хотел бы спросить, для чего нужен библиотека time.h и чем он отличается от библиотеки ctime?
И еще один вопрос: зачем нужен вывод "printf" в с++? и чем он отличается от cout?
это одно и тоже. time.h и ctime это одно и тоже. Просто time.h используют в С, а ctime в С++. С printf и cout также. Printf в С, а cout в С++
Rocer shot во многом прав:
Действительно, для использования стандартных библиотек C в C++ не нужно писать ".h" в имени файла (хотя можно), нужно добавлять в начало имени букву 'c'. И больше никаких отличий.
Но вот по поводу "printf" и "scanf" в C++ у меня есть замечания. Опять же, тут как в случае с библиотеками: "printf" и "scanf" - это функции языка C, но в C++ их так же можно использовать, только у них есть некоторые отличия от "плюсовых" "cout" и "cin". Отличия как в функционале, так и в синтаксисе. Для простых задач, конечно, проще использовать "cout" и "cin", но вот если нам надо, например, задать количество выводимых цифр в вещественном числе, то "cout" тут не силён. Вот пример, нам нужно ввести вещественное число (допустим, это будет 15.26479), а затем вывести его в формате 0000.00, то есть добавить незначащие нули перед числом, а после запятой вывести две цифры:
{
double var;
cin >> var; //в вводе числа нет ничего необычного, поэтому используем "cin"
cout
@@BadDanFeeds уже несколько раз здесь читаю ваши комментарии. Годно, очень годно
Спасибо, я стараюсь помогать другим)
@@BadDanFeeds это хорошо, что ты помогаешь другим.Тогда обьясни эту запись и по возможности напиши как её можно расписать *( *( p = new double* ) = new double ) = 2;
Годный ролик, качественный контент!
Джедаи говорят тебе спасибо!
Благодарочка сэр
👍👍👍
Серега, я готов начинай
Удачи в развитии канала и спасибо за лайк)))
.
Здраствуй Сергей, ответь если прочитаешь: можно ли выделять динамическую память для двухмерного массива внутри класса
А я-то думал почему компилятор ругается на мою переменную new .
👍
Расскажите пожалуйста о борьбе с фрагментацией памяти.
У меня 2019 студия, и там после операции delete адрес не остается тот самый, а становится 00008123. Почему так?
Это зависит от настроек SDL. Скорее всего у тебя по пути "ПРОЕКТ -> Свойства -> Свойства конфигурации -> C / C ++ -> Общие -> Проверки SDL " стоит Да (/sdl)
спасибо
Уроки просто суперские :D
Скажи, а будешь ли ты делать такие видео-уроки на winapi, работа с файловой системой? и.т.д =)
На счёт winapi пока не уверен, а работа с файлами позже будет.
Будет полезно разобрать: Директивы #define, #ifdef и #ifndef Сделай видос =)
@@SimpleCodeIT здравствуйте, пожалуйста, сделайте в будущем уроки по Qt или же по windows.h
@@crackall1946 чувак, если захочет - сделает. Человек тебе бесплатно и максимально понятно объясняет темы, этого уже много. Хватит пользоваться добротой чужой
@@SaffronChipMCPE какие он темы объясняет? Он просто справочник читает...
Подскажите пожалуйста как очистить полностью динамическую память
как в visual studio community сделать так, чтобы знак указателя *стояла ближе к названию переменной?? у меня наоборот и не могу найти как это изменить.
Лучше привыкни к этому, потому что это правильно
Спасчебо :3
Почему мы используем именно указатель а не обычный инт?
Обычный int выделяется внутри области памяти, занятой самой программой. Указатель же может ссылаться на ячейку, лежащую за пределами области памяти, занятой программой (поэтому и называется "динамическая" память, то есть вне области программы).
Компилятор знает все наши переменные, и память под них изначально выделена.
@@Сергей-т9д7в компилятор знает не все переменные, например когда нужно выделить массив, длину которого узнаем уже в процессе работы программы
@@МаринаЗиновьева-п5ы , вы спец по С++?
@@ДмитрийНормов-ю6ц Вы разве не поняли, что она чушь написала?
4:30 разве разыменование делается звёздочкой *? а амперсанд & для чего?
Danil Gorshnev
В предыдущих видео есть
@@hotabmax6431 я понял, что перепутал с разадресацией, забыл исправить, сорян
Это синтаксис языка. Когда объявляешь указатель *pa то указываемый fhuevtyn берётся в &, а если указывается динамическая память то без амперсанда.
@@hotabmax6431 спасибо)
Toп спасибо
оч годно)
Интересно а это можно использовать в функции?
почему delete pa , а не *pa ??? *pa(10) -это же интовая переменная и она дожна удалятся, просто pa это адрес в памяти , значит должен был затерется адрес , а не значение ячейки 10
гуд
Спсб
По сути через неконтролируемый цикл счетчика можно забить память компьютера?
Да, проверил, можно. Куча ошибок, и вообще жесть происхоидт.
после .net трудно представить, зачем переменную int нужно создавать в куче. А действительно, зачем?
genialno
Сергей, здравствуйте!
Не правильно понял задание дз но теперь уже страшно интересно: как сделать правильно шаблон и функцию которая меняет местами абсолютно два любых значения (например string и double) . Я пытался сделать
template
void foo(T1 &a, T2 &b, T3 *c = nullptr)
{
*c = a;
a = b;
b = *c;
}
но не даёт скомпилировать foo(a, b); , пишет что не хватает аргументов
P.S.пробовал другие варианты тоже не получается (((
2 одинаковых вида памяти нужно
Да блин, самое интересное на следующий урок оставил
а если в отладчике после (шага) ну красные буквы не появились про проходе (делит) , значит не удалилось?
не удаётся запустить программу "адрес" не удаётся найти указанный файл. В релизе удалось разок запустить , но потом тоже самое начало писать.
В чем причина, подскажете?
что самое плохое может случиться если написать следующий код ?
int* ptr = new int;
long long i = 0;
for(;;)
{
*(ptr + i) = 5;
i ++;
}
а чего так просмотров мало стало ?)
смотрю вторую неделю дошел до этого урока, началось то, что все время отвлекают, и совсем не остаётся времени, а след день хочется отдохнуть, боюсь так и интерес потеряю :( , это будет не хорошоо
Симпл код: C++ не имеет сборщика мусора и когда-то оперативная память просто закончится и наша программа просто помрёт
Я, после того как это услышал:
while (true) {
new int;
}
А что делать, если я забуду написать delete, а программу закончу. Как убрать динамическую память?
Операционка почистит сама.
Никак. Большинство типичных ОС автоматически подчищают за процессом. Однако в общем случае никто этого не гарантирует. Вполне возможно, что на какой нибудь экзотической ОС произойдет утечка ресурсов.
Почему у меня после очистки данных указатель меняет адрес?
А если например взять из оперативки 5000 и зайти в ведьмака или типо этого что будет?
Краш, либо просто не запустится игра
Ну, наверноес п*сда твоему компу, можешь выкидывать
Кроме фризов и перезагрузки пк, ничего хорошего ты не увидишь
За собой нужно убирать)
int &X = *new int;
X = 4;
А как же такой пример? Как по мне он лучше.. Просто меня бы раздражало по кд писать *X что бы присвоить значение и так наверно код будет ещё более оптимизированнее с моим примером.. Правда это смотря какой код..
Ага, правда теперь при удалении придётся писать &X..: delete &X;
Сказано же, что выделяют обычно под массивы, а наши массивы и являются указателями, где звёздочки не нужны.
К тому же ссылку нельзя переназначить для других целей, а указатель можно.
Почему я должен дважды указывать тип данных int *pa = new int?
Системе нужно знать, сколько памяти запрашивается. Мы и говорим ей "дай память под переменную инт" т.е. 4 байта
Сергей, а если я под переменную int захочу выделить память 4 байта float?
@@bogdns Скорее всего компилятор будет ругаться о несовпадении типов данных.
@@bogdns системе то все равно, что мы там храним, ей главное размер знать, а компилятору важно - он же следит, чтобы мы не путались в собственных переменных.
Потому что слова Тарелька и Вилька пишутся без мягкого знака а Кон с мягким знаком.
я так и не понял, зачем нужен этот new int и delite))) типо для быстродействия проги и экономии памяти, так что-ли?))
new int по факту создание динамического массива, delite для удаление данных с памяти - ты пишешь программу используя динамичны массив все закончилась его роль в каком то участке кода и ты переходишь к второму этапу или части кода и от что бы у тебя не было засраной памяти старыми данными ты пишешь delite, и делаешь дальше свои дела если не напишешь у тебя автоматом очистит когда закроешь программу, но это не вариант если ты работаешь в компании по созданию игр, потому что у тебя будет код не на 100-200 строчек а на тысячи по этому и объем памяти у тебя будет уходить на много больше по этому тебе прийдется не забывать писать delite что бы не сломать прогу и за не хватки памяти, как то так
По сути нужен для того чтобы, выделить память для какойто ресурсоемкой задачи. Либо в том месте программы, где заранее не знаешь сколько памяти надо, а потом по ходу выполнения уже выделить нужный объем. А делит чтобы эту память просто освободить, когда она уже не нужна.
@@ЯрославАлмазов-н1к только delete а не delite
Ths
Такой вопрос: в каком случае нам понадобится выделять дополнительную память?
Все зависит от программы которую пишешь. Ты пишешь чит типо Читэнжин. После отсеевания значений их надо гдето хранить. Ты же не знаешь сколько они займут памяти если хранить статически? Наверное нет. Поэтому ее проще выделить для конкретной задачи. Может и плохой пример, но как то так.
Но когда ты пишешь программу, ты же всегда можешь вернуться в код и выделить статически память.
@@Kokurorokuko Это так скажем я привел пример для уже готового решения. Или например тебе надо сделать матрицу. А размер вводит пользователь. Соответсвено лучше выделить память динамически, чем писать костыли.
Окей, спасибо
@@Kokurorokuko а еще, если обьект занимает много памяти, нужно выделить динамическую во имя избежания переполнения стека
Ребят, почему у меня на xcode после оператора delete при выводе переменной все равно выводится прошлое значение?
потому что после оператора delete данное значение никто пока ещё не изменил
Почему после использования delete я все ещё могу получить доступ к значению???
Потому что солнышко по прежнему свет. Мир не перевернулся. И память тоже все ещё существует.
9к просмотров, одни программисты развелись....
Хах,видел бы что сейчас твориться))
Vinch-Game "Мы программист" против подобных комментариев.
Одни программисты? За год? Вы видели, сколько за день набирают видео по типу "Парень обосрался на горке"?
C++ как мама, не убершь мусор - уберут тебя...
up
Помогите плиз(
Решил попробовать эту вещь а именно:
int *pa = new int;
*pa=100;
Cout
Адель, ты звездочку забыл добавить:
Delete *pa;
Та же проблема. Как решил?
я убрал строчку "setlocale(LC_ALL, "RUS");" и всё сработало, в чём связь?)))
@@АртёмТ-ь5п я пишу на телефоне, хах...
Поэтому мне не нужно писать селтлокал, а так проблема не решилась, извиняюсь, что такое долгое кд на ответ, перегорел на пол года, сейчас снова вспоминаю все. Вот оказался тут и смотрю мой комент)
@@Miiazzma с С++ выгорание это норма хаха
Как я понял размер адреса это 4 байт, то есть адрес FFFFFFFF это придел (4 гб оперативки) А если у нас оперативки например 8гб, то какой адрес будет если все адреса до FFFFFFFF будут заняты?
4 байт это размер для данной переменной в int
@@chinpokomon9387 указатель тоже весит 4байта
@@sabirsafarov8142 Нет никаких "тоже" Стандарт не гарантирует ни размер int, ни размер указателя. На разных платформах они могут быть разными.
А зачем в этом уроке надо было подключать библиотеку: string на 2 стр
просто так
В данном уроке библиотека string не нужна, видимо, осталась с предыдущих уроков. Тут только iostream нужен.
"Память ест". XD
Спасибо
большое спасибо!
Спасибо!!!
спасибо
Спасибо
Спасибо!
Спасибо!