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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.73
Rikimaru
7 / 7 / 0
Регистрация: 25.09.2010
Сообщений: 31
#1

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

12.11.2010, 12:13. Просмотров 3677. Ответов 21
Метки нет (Все метки)

дан двумерный массив 3х5 выделить динамически память под него, затем перераспределить ее в массив 5х3, затем удалить(выделить и удалить там все понятно, помогите найти ошибку в перераспределении)
C++
1
2
3
4
5
6
int**a=(*int)calloc(3,sizeff(*int));
         for(int i=0; i<3; i++)
             a[i]=(*int)calloc(5,sizeof(int));
         realloc(a, 5*sizeof(int*));
         for(int i=0; i<5; i++)
             realloc(a[i], 4*sizeof(int));
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2010, 12:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос перераспределение динамической памяти (C++):

перераспределение динамической памяти - C++
дан двумерный массив 3х5 выделить динамически память под него, затем перераспределить ее в массив 5х3, затем удалить(выделить и удалить там...

STL, deque Перераспределение памяти - C++
Есть книга, в ней написано такое о деке Можно ли пример увидеть, а-то чего-то непонятно. Пример когда все итераторы из-за...

std::vector Перераспределение памяти - C++
Код #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;tchar.h&gt; ...

Перераспределение памяти с new под объекты - C++
есть класс #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class tel_book { private: char *FIO; int count...

С помощью чего можно представить динамический массив, чтобы исключить перераспределение памяти? - C++
С помощью чего можно представить динамический массив? Пробовал vector, но там перераспределение памяти. Я знаю, что можно зарезервировать...

Вопрос по динамической памяти - C++
мне надо создать масив содержащий структуры. У меня вот код какой: vec *fild;//vec это название структуры конструктор ...

21
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
16.11.2010, 22:35 #16
Навскидку если, я очень сильно сомневаюсь, что в линуксе оперативная память, отданная процессу по его окончании не будет возвращена оси БЕЗУСЛОВНО.

Второй раз вынужден попроситьбыть точнее с терминами. Что значит "программа может стать частью другой программы"? Если имеется ввиду отношение отец- сын, то все процессы, включая заявленный по определению чьи-то дети, либо проводника либо cmd (это в общем случае) или хитрого автроского процесса (это в частности). Автоматическое освобождение памяти (по убиению процесса) не повлияет ни на работу ни отцов ни детей ни стороннних прог, если конечно последние не используют диверсантский приём типа "запись в адресное пространство стороннего процесса"

Но в этом случае как показывает практика они НИЧЕГО не смогут туда записать (у меня, например, не срабатывает api-функция VirtualProtectEx). Следовательно, память действительно возвращается оси независимо от того, сколько прог её используют.
...А так-то конечно, лучше принудительно возвращать память оси
2
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.11.2010, 05:10 #17
Цитата Сообщение от kravam
Что значит "программа может стать частью другой программы"?
это значит, что она может стать подпрограммой какой-нибудь программы и поэтому нужно её делать завершённой изначально
1
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
20.11.2010, 22:20 #18
Цитата Сообщение от kravam Посмотреть сообщение
Осторожнее с терминами. Другой процесс- это другой процесс, в твоей программе создаётся только один процесс. Если он заканчивается, вся выделенная память возвращается оси.
Здесь читаем
По завершении процесса его код и выделенные ему ресурсы удаляются из памяти.
почитал я эту информацию, возник вопрос так если мы создаем внутри одного процесса несколько потоков(трэдов) получается тоже что и при создании дочерных процессов(я имею ввиду распаралеливание выполнения программы)?
1
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
20.11.2010, 22:38 #19
Нет. Ну тут много различий.

Вот одно из них, важное. Каждый поток должен иметь хотя бы ОДИН процесс. Если не будет ни одного потока, процесс убиется.

А теперь попробуем провести аналогию с дочерними процессами-, нет, не то же самое. Если исчезнут все дочерние процессы, отцовский процесс как работал так и будет работать.

(Кстати, верно и обратное. Если ты убьёшь процесс, это автоматом означает убиение всх потоков этого процесса. Но убитие процесса отнюдь не означает убитие всех его дочерних процессов)

А вообще это всё там расписано. Попробуй побольше почитать.

Добавлено через 5 минут
Если уж сравнивать поток, то с функцией. ОНа имеет начало и конец в адресном пространстве процесса. Ну, то же самое с потоком. Отличие в том, что пока одна функция не закончится, другая не выполнится.

Вот псевдокод:
funktsia_1;
funktsia_2;
funktsia_3;

А если ты вместо них оеперь напишешь потоки, то они быдут выполняться ОДНОВРЕМЕННО. Ну, как одновременно-то один, то второй, то третий. Это уж как система распределит между ними время

potok_1;
potok_2;
potok_3;

Но, по-моему можно так под написать, что второй поток не выполнится, пока не закончится первый. Но это уже частный случай. А в общем если брать, то они будут выполняться ПСЕВДООДНОВРЕМЕННО. Вот в этом их отличие от функций. Ну и другие ещё наверное есть
1
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
20.11.2010, 22:44 #20
Цитата Сообщение от kravam Посмотреть сообщение
(Кстати, верно и обратное. Если ты убьёшь процесс, это автоматом означает убиение всх потоков этого процесса. Но убитие процесса отнюдь не означает убитие всех его дочерних процессов)
понятно, но я не то имел ввиду...
там сказано что ядро выделяет квантованное время для потока, то есть если мы будем иметь 1 процесс состоящий с двух потоков, а с другой стороны родительский процесс с дочерным процессом, которые имеют по одному потоку - в итоге и там и там будет отведено по 2 кванта процессорного времени(в сумме)?
1
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
20.11.2010, 23:20 #21
Что такое квант я плохо представляю. ПОпробую тебе ответить так: в первом случае мы будем иметь 2 потока, а втором не 2, а 3! Один поток для основного процесса и два для дочерних
2
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
20.11.2010, 23:37 #22
Цитата Сообщение от kravam Посмотреть сообщение
Что такое квант я плохо представляю. ПОпробую тебе ответить так: в первом случае мы будем иметь 2 потока, а втором не 2, а 3! Один поток для основного процесса и два для дочерних
все понял, спасибо
могу взамен объяснить что такое квант времени
допустим если взять промежуток времени(не важно какой), например 10 сек и разделить его на 10 равных частей в итоге мы получим 10 квантов длинной 1 секунда, тот же процесс идет и в оцифровке, когда находиться значение измеряемой величины через определенные промежутки времени(кванты времени)
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2010, 23:37
Привет! Вот еще темы с ответами:

Переменные в динамической памяти! - C++
подскажите как реализовать такое задание: Разместите в динамической памяти две переменные типа структура, содержащую информацию о...

Выделение динамической памяти C++ - C++
Всем доброго времени суток. Вот столкнулся с проблемой и пока что не приходит ничего интересного по поводу её решения. есть у меня метод,...

Удаление динамической памяти - C++
Всем здрасьте. Имеется вот такая структура. struct ModelType { DWORD FVF; IDirect3DVertexBuffer9* vertexBuffer; ...

Матрица в динамической памяти - C++
Здраствуйте,начал проходить динамическую память ,так немогу зделать 2-х мерный массив,помогите пожалуисто разобраться ,ии какие ошибки тут...


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

Или воспользуйтесь поиском по форуму:
22
Yandex
Объявления
20.11.2010, 23:37
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru