 |
Цитата: |
 |
|
|
|
|
|
|
|
|
|
|
А можно по подребнее касательно сылок.
Т.е. любой процес может перезаписать этот участок памяти?
|
|
 |
|
 |
|
Естественно, НЕТ. Любая "уважающая себя" операционка этого не допустит.
Все ниженаписанное относится к Windows (NT, 2000, XP)
Когда запускается исполняемый файл, операционка создает окружение для него, в частности выделяет ему память - 4 Гига, виртуальных естественно. И обратиться к этой памяти может только этот процесс. Так вот в этой памяти есть область так называемой "кучи" (heap). В этой области можно создавать объекты/переменные, о количестве которых в процессе написания программы не имеешь представления. Например, геометрические фигуры в графическом редакторе.
А вообще это основы. Переменная - это просто поименованный участок памяти, который, конечно, имеет свой адрес.
Запись
int a = 5;
означает, что при компиляции программы в секции данных будет выделена память 4 байта с неким адресом и по этому адресу будет находиться число 5.
int* a = new int;
означает, что на момент компиляции будет выделена память под указатель на переменную типа int, но адрес этой переменной будет известен только на этапе выполнения и будет получен в "куче" оператором new.
Вот. Может все сумбурно написал. Рихтер Вам поможет.
