Показать сообщение отдельно
Старый 12.12.2006, 16:08   #4
kvm
Неактивный пользователь
 
Аватар для kvm
 
Пол:Мужской
Регистрация: 09.12.2006
Адрес: Москва.
Сообщений: 39
Репутация: 19
По умолчанию Re: Помогите разобраться с указателями в BDS 2006 (С++)

Цитата:
Сообщение от SCUTUM Посмотреть сообщение
А можно по подребнее касательно сылок.
Т.е. любой процес может перезаписать этот участок памяти?

Естественно, НЕТ. Любая "уважающая себя" операционка этого не допустит.
Все ниженаписанное относится к Windows (NT, 2000, XP)
Когда запускается исполняемый файл, операционка создает окружение для него, в частности выделяет ему память - 4 Гига, виртуальных естественно. И обратиться к этой памяти может только этот процесс. Так вот в этой памяти есть область так называемой "кучи" (heap). В этой области можно создавать объекты/переменные, о количестве которых в процессе написания программы не имеешь представления. Например, геометрические фигуры в графическом редакторе.

А вообще это основы. Переменная - это просто поименованный участок памяти, который, конечно, имеет свой адрес.
Запись
int a = 5;
означает, что при компиляции программы в секции данных будет выделена память 4 байта с неким адресом и по этому адресу будет находиться число 5.

int* a = new int;
означает, что на момент компиляции будет выделена память под указатель на переменную типа int, но адрес этой переменной будет известен только на этапе выполнения и будет получен в "куче" оператором new.

Вот. Может все сумбурно написал. Рихтер Вам поможет.
kvm вне форума
 
Ответить с цитированием Вверх
Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение:
 
Время генерации страницы 0.02315 секунды с 10 запросами