Форум программистов, компьютерный форум CyberForum.ru

Теория по динамической памяти - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2012, 06:06     Теория по динамической памяти #1
Предположим, применяется оператор new в форме для массива:
C++
1
p=new int [n];
. n ведь может быть и большим. Может n==1000000? Где запоминается, сколько выделено памяти и откуда система знает, сколько надо освободить памяти по
C++
1
delete [] p;
? Ведь там то я n не указываю. Может надо освободить сразу много страниц? Освобождаются все страницы, расположенные подряд? Эйси. А если я сначала выделили две страницы, а потом ещё три и все пять оказались подряд? А освобождаю сначала две? За счёт чего система заберёт только первую страницу, а не все пять? Или они не могут быть подряд?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 06:06     Теория по динамической памяти
Посмотрите здесь:

C++ Вопрос по динамической памяти
Переменная в динамической памяти C++
C++ Массив в динамической памяти
C++ выделение динамической памяти
C++ Выделение динамической памяти
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.12.2012, 18:06     Теория по динамической памяти #41
Цитата Сообщение от Vourhey Посмотреть сообщение
Если запускать его в студии, то я бы поменял вот так:
Код C++
1
2
3
4
5
int *pInt;
pInt = new int[10];
for(int i=0;i<10;i++)
pInt[i]=i;
cout<<*(pInt-4)<<endl;
И вывод - 40. Что и есть 10 * размер int. Если поменяю на:
Код C++
1
pInt = new int[128];
То вывод - 512
хм, неплохо только не понял почему
C++
1
cout<<*(pInt-4)<<endl;
получается мы сместились влево на 4*sizeof(int) байт, почему именно столько

Добавлено через 4 минуты
а на сколько надо для double смещатся? 1,2,4,8,16,32,64 не подходят)

Добавлено через 16 минут
разобрался уже, вот это спасло)
C++
1
cout<<(int)*((int*)pInt-4)<<endl;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 19:58     Теория по динамической памяти
Еще ссылки по теме:

C++ Удаление динамической памяти
C++ Переменные в динамической памяти!
C++ Выделение динамической памяти

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,047
14.12.2012, 19:58     Теория по динамической памяти #42
Цитата Сообщение от aLarman Посмотреть сообщение
хм, неплохо
ага
только проверено, только в студии
завтра микрософт поменяет идеологию выделения памяти, куда девать все исходники?
в общем использование "хакерских методов" имеет место быть для конкретной вещи, но рекомендовать "на века" не стал бы
Yandex
Объявления
14.12.2012, 19:58     Теория по динамической памяти
Ответ Создать тему
Опции темы

Текущее время: 20:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru