История изменений
Исправление Kroz, (текущая версия) :
Ок, если хочешь, давай с такой стороны.
За программой закреплены определённые участки памяти. Они могут быть как статические, так и динамические. Статические выделяются при запуске программы; это области памяти под переменные, которые ты объявил в программе. Динамические - ты их выделяешь и освобождаешь с помощью new и delete.
Но в обоих можно считать что где-то есть реестр ячеек памяти, которые закреплены за программой.
Указатель - число, адрес ячейки памяти. Невалидный указатель содержит адрес ячейки, которая не закреплена за программой.
Получается, что когда ты выделяешь память с помощью new, программа находит свободную ячейку памяти и закреляет ее за собой; адрес этой ячейки помещается в переменную-указатель. Указатель валидный. Когда ты делаешь delete, программа помечает ячейку памяти как свободную, не закрепленную за собой. И хотя численное значение указателя не меняется, получается что указатель не валидный, так как указывает на ячейку памяти уже не закрепленную за программой.
Так понятней?
Опять же, на практике всё гораздо сложнее, но для начала такой модели мира хватит.
Исправление Kroz, :
Ок, если хочешь, давай с такой стороны.
За программой закреплены определённые участки памяти. Они могут быть как статические, так и динамические. Статические выделяются при запуске программы; это области памяти под переменные, которые ты объявил в программе. Динамические - ты их выделяешь и освобождаешь с помощью new и delete.
Но в обоих можно считать что где-то есть реестр ячеек памяти, которые закреплены за программой.
Указатель - число, адрес ячейки памяти. Невалидный указатель содержит адрес ячейки, которая не закреплена за программой.
Получается, что когда ты выделяешь память с помощью new, программа находит свободную ячейку памяти и закреляет ее за собой; адрес этой ячейки помещается в переменную-указатель. Указатель валидный. Когда ты делаешь delete, программа помечает ячейку памяти как свободную, не закрепленную за собой. И хотя численное значение указателя не меняется, получается что указатель не валидный, так как указывает на ячейку памяти уже не закрепленную за программой.
Так понятней?
Опять же, на практике всё гораздо сложнее, но для начала такой модели мира хватит.
Исправление Kroz, :
Ок, если хочешь, давай с такой стороны.
За программой закреплены определённые участки памяти. Они могут быть как статические, так и динамические. Статические выделяются при запуске программы. Это области памяти под переменные, которые ты объявил в программе. Динамические - ты их выделяешь и освобождаешь с помощью new и delete.
Но в обоих можно считать что где-то есть реестр ячеек памяти, которые закреплены за программой.
Указатель - число, адрес ячейки памяти. Невалидный указатель содержит адрес ячейки, которая не закреплена за программой.
Получается, что когда ты выделяешь память с помощью new, программа находит свободную ячейку памяти и закреляет ее за собой; адрес этой ячейки помещается в переменную-указатель. Указатель валидный. Когда ты делаешь delete, программа помечает ячейку памяти как свободную, не закрепленную за собой. И хотя численное значение указателя не меняется, получается что указатель не валидный, так как указывает на ячейку памяти уже не закрепленную за программой.
Так понятней?
Опять же, на практике всё гораздо сложнее, но для начала такой модели мира хватит.
Исходная версия Kroz, :
Ок, если хочешь, давай с такой стороны.
За программой закреплены определённые участки памяти. Они могут быть как статические, так и динамические. Статические выделяются при запуске программы. Это области памяти под переменные, которые ты объявил в программе. Динамические - ты их выделяешь и освобождаешь с помощью new и delete.
Но в обоих можно считать что где-то есть реестр ячеек памяти, которые закреплены за программой.
Указатель - число, адрес ячейки памяти. Невалидный указатель содержит адрес ячейки, которая не закреплена за программой.
Получается, что когда ты выделяешь память с помощью new, программа находит свободную ячейку памяти и закреляет ее за собой; адрес этой ячейки помещается в переменную-указатель. Указатель валидный. Когда ты делаешь delete, программа помечает ячейку памяти как свободную, не закрепленную за собой. И хотя численное значение указателя не меняется, получается что указатель не валидный, так как указывает на ячейку памяти уже не закрепленную за программой.
Так понятней?