Где указатель хранит значение

286
03 января 2018, 19:36

Если указатель хранит адресс ячейки, то где хранится само значение?? например где хранится число 5?

int *b = new int(5)
Answer 1

Указатель хранит адрес ячейки, в которой должно храниться какое - то значение (Как верно подсказал мне пользователь KoVadim, должно, но не всегда соблюдает это правило :) ). Когда нужно получить значение, программа смотрит адрес, находящийся в указателе, а потом извлекает значение по адресу, который был в нём. Всё просто.

EDIT, как говорится: адрес, который находится в указателе разный при каждом новом запуске программы. Он непостоянный. Существует специальная функция - аллокатор, которая и выделяет память под ячейку, на которую будет ссылаться указатель.

Answer 2

В случае выделения памяти оператором new память под значение выделяется в специальной области памяти, называемой кучей. А в указатель соответсвенно записывается адрес этого значения. Не стоит забывать освобождать память выделенную в куче, поскольку это может привести к утечке памяти: значение в куче будет храниться пока не вызовется оператор delete. При объявлении переменной int a = 5 значение будет храниться в стеке и при выходе из функции выделенная память освободится автоматически.

READ ALSO
Что означают данные строки в коде?

Что означают данные строки в коде?

Что ознают данные строки в коде ?

317
Ошибка в отображении формата данных SimpleDateFormat Java

Ошибка в отображении формата данных SimpleDateFormat Java

добрый день помогите разобраться пожалуйста

383
AccessDeniedException

AccessDeniedException

Существует следующая строка кода:

354