Другие языки программирования и технологии
Вопрос про указатели в С++ внутри
Почему одни указатель создаются при помощи нью и удаляются при помощи делит, а для других указателей таких операторов не надо? Почему те указатели, которые созданы при помощи оператора нью удалять надо, а другое удалять не надо? int * x; int*y=new int; Я предполагаю что верхний указатель объявлен в внутри программы, а указатель ниже объявлен за пределами программы. Поправьте меня пожалуйста, если я не права.
int * x;
вот это указатель, это переменная которая содержит адресс а не значение и указывает на какуюто область в памяти, если написать вот так
int *x;
int a=5;
x = &a;
то указатель будет указывать на область памяти где "расположены данные" переменной а
int*y=new int;
а функцией new ты просишь операционную систему выделить тебе память размера int, после выделения памяти функция возращает адресс выделенного участка, который и помещается в переменную-укзатель y
елси переменной y потом присвоить другое значение, то выделеный участок памяти будет недоступен для использования, не страшно когда это одна переменная, но кода это массив с милионами значений, тогда при потере возникает так называемая утечка памяти, тоесть память выделена но она потеряна для использования
поэтому после использования память нужно освобождать, делается это при помощи функции delete
int * x;
int*y=new int;
Я предполагаю что верхний указатель объявлен в внутри программы, а указатель ниже объявлен за пределами программы. Поправьте меня пожалуйста, если я не права.
в первом и во втором случае указатели объявлены внутри стэковой памяти программы, а вот во втором случае область памяти на которую будет указывать указатель y выделяется в динамической области памяти
вот это указатель, это переменная которая содержит адресс а не значение и указывает на какуюто область в памяти, если написать вот так
int *x;
int a=5;
x = &a;
то указатель будет указывать на область памяти где "расположены данные" переменной а
int*y=new int;
а функцией new ты просишь операционную систему выделить тебе память размера int, после выделения памяти функция возращает адресс выделенного участка, который и помещается в переменную-укзатель y
елси переменной y потом присвоить другое значение, то выделеный участок памяти будет недоступен для использования, не страшно когда это одна переменная, но кода это массив с милионами значений, тогда при потере возникает так называемая утечка памяти, тоесть память выделена но она потеряна для использования
поэтому после использования память нужно освобождать, делается это при помощи функции delete
int * x;
int*y=new int;
Я предполагаю что верхний указатель объявлен в внутри программы, а указатель ниже объявлен за пределами программы. Поправьте меня пожалуйста, если я не права.
в первом и во втором случае указатели объявлены внутри стэковой памяти программы, а вот во втором случае область памяти на которую будет указывать указатель y выделяется в динамической области памяти
нью создаёт объект занимающий место в памяти и его надо потом грохать делетом (см. "конструктор/деструктор" в учебнике)
создание простого указателя жрёт место только для него и освобождает после выхода из блока
(про указатели лучше смотреть не С++ а С. С++ наследует их из С
знающие С++ и не знающие С не знают С++
Керниган, Ричи "Язык программирования С" -есть в инете.
Это библия сишников)
нью - новый обект, под который выделяется память и возврашается указатель где эта памать.
указатель - просто переменная типа "указатель" на то, что потом надо будет
создание простого указателя жрёт место только для него и освобождает после выхода из блока
(про указатели лучше смотреть не С++ а С. С++ наследует их из С
знающие С++ и не знающие С не знают С++
Керниган, Ричи "Язык программирования С" -есть в инете.
Это библия сишников)
нью - новый обект, под который выделяется память и возврашается указатель где эта памать.
указатель - просто переменная типа "указатель" на то, что потом надо будет
Первый просто указатель - он ни на что не указывает в данный момент.
Второй - указатель, который указывает на переменную, для которой мы выделяем память при помощи оператора new.
Раз мы память выделили, то в дальнейшем ее надо освободить оператором delete.
Для первого указателя мы память не выделяли, следовательно и освобождать не надо.
Второй - указатель, который указывает на переменную, для которой мы выделяем память при помощи оператора new.
Раз мы память выделили, то в дальнейшем ее надо освободить оператором delete.
Для первого указателя мы память не выделяли, следовательно и освобождать не надо.
Похожие вопросы
- Два вопроса про указатели в С++ внутри.
- Вопрос по указателям и массива С++
- Вопрос по WEB Дизайну/программированию - внутри фото.
- Вопрос про константы в С++ внутри.
- Знатоки HTML, нужна помощь! Думаю, вопрос не сложный для вас. Внутри.
- Вопрос по обучению в программировании (внутри, важно)
- Вопрос по 3ds Max (Видео внутри)
- СЛОЖНА! С++ Начал читать про указатели. Скопилось куча вопросов. Помогите!
- Список с использованием указателей на Си
- C++. Указатели. Связный список. Как добавить элемент в конец списка? Вопрос для разбирающихся