Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (08.01.2007 в 23:36)
Конструкция массива гарантирует, что его элементы располагаются друг подле друга, чтобы можно было передвигаться вдоль массива при помощи указателя. Когда вы объявляется массив из 10 элементов int для него подыскивается соответствующий кусок свободной памяти. Однако это не факт, что вслед за ним будут свободный кусок, чтобы к нему можно было добавить ещё элементов. Поэтому процедура увеличения объёма массива заключается в выделении нового объёма памяти равного конечному объёму массива, копированию туда старых элементов и уничтожению старого объёма памяти (STL по отношению к векторам, кстати, действует точно также) - пример приведён в посте Евгения Петрова. Это достаточно дорогостоящая операция (вообще выделение и освобождение памяти всегда дорого обходится), поэтому если приращение памяти производится часто, лучше прибегнуть к другим конструкциям, например, двухсвязному списку - его элементы могут находиться в памяти где попало, так как связаны друг с другом указателями.


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: