Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 06.06.2009
Сообщений: 14

Работа с динамической памятью!

06.06.2009, 13:06. Показов 5241. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет! Такая задача: Необходимо выделить(по N Кб) и освободить всю динамическую память. Определить время выделения и освобождения, и объем памяти. Использовать функции: 1) malloc, free. 2) heapAlloc, heapFree.
Вообще я разбираюсь в программировании, но на С/С++ никогда ничего не писал. Помогите кто в курсе дел.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.06.2009, 13:06
Ответы с готовыми решениями:

Работа с динамической памятью
Привет всем. Я недавно начал изучать C++ и наткнулся на ошибку:"двумерный динам.exe вызвал срабатывание точки останова" при очистке...

Работа с динамической памятью
Всем привет! Начинающий программист(около нескольких недель), сейчас пишу программы чисто для себя, для тренировки на С++ Вот...сегодня...

Работа с динамической памятью
При вызове деструктора ошибка: "Ошибка C2227 выражение слева от "->next" должно указывать на тип класса, структуры или объединения либо на...

27
0 / 0 / 0
Регистрация: 06.06.2009
Сообщений: 14
08.06.2009, 14:38  [ТС]
Студворк — интернет-сервис помощи студентам
ха, точно)
только теперь возникает ошибка:
task2.c:9: error: storage size of ‘Head’ isn’t known

т.е. надо как-то изначально задать размер храниища? приравнять к NULL не получается.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
08.06.2009, 14:43
Весь исходник покажи
0
0 / 0 / 0
Регистрация: 06.06.2009
Сообщений: 14
08.06.2009, 14:48  [ТС]
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdlib.h>
 
struct Node{
    int  count;
    struct Node *next;
};
typedef struct Node *PNode;
 
struct PNode Head;
 
/*  Pnode CreateNode(char NewWord[]){
   PNode NewNode = new Node;
   strcpy(NewNode->word, NewWord);
   NewNode->count = 1;
   NewNode->next = NULL;
   return NewNode;
}
*/
 
int main(){
 
    return 0;
}
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
08.06.2009, 15:10
У тебя нет типа "struct PNode". Есть просто "PNode"
0
0 / 0 / 0
Регистрация: 06.06.2009
Сообщений: 14
08.06.2009, 15:23  [ТС]
блин, может мне вообще эти динамические списки не нужны и есть какой-нить более простой способ? Как уже говорилось - надо выделить всю динамическую память блоками по (к примеру) 80 Кб. После чего освободить и вывести статистику.

Есть какой-нить способ хранить ВСЕ указатели на выделенные блоки, чтоб их потом можно было удалить? проблема в том, что неизвестно сколько этих блоков получится.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
08.06.2009, 16:05
Цитата Сообщение от fba Посмотреть сообщение
Есть какой-нить способ хранить ВСЕ указатели на выделенные блоки, чтоб их потом можно было удалить? проблема в том, что неизвестно сколько этих блоков получится.
Можешь хранить в каком-нибудь динамическом массиве, который так же будешь выделать кусками. осле ого, как весь кусок заполнился, перевыделяешь его (через realloc), либо ведёшь страничную структуру из кусков

Хотя наиболее простым вариантом для твоего случая будет выделять куски, а в начало каждого куска помещать указатель на слудующий. Т.е. вести список, где сами куски являются элементами списка

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct Block
{
  struct Block *next;
};
 
...
// Выделение нового куска размером в size байт
struct Block *elem;
 
// Со слишком маленькими кусками работать не будем
if (size < sizeof (struct Block))
  abort ();
 
// Нам до фонаря тот факт, что выделяемый блок имеет размер бОльший, чем наша структура.
// Главное, что мы его выделили и что в начале блока лежит наша структура,
// по которой мы найдём все блоки
elem = malloc (size);
prev_elem->next = elem;
elem->next = NULL;
1
0 / 0 / 0
Регистрация: 06.06.2009
Сообщений: 14
08.06.2009, 17:11  [ТС]
Yeah! Вроде сделал, что требовалось!
А терь есть еще небольшая задачка: Как то, что получилось переделать под heapAlloc и heapFree? Это вообще Си'шные команды?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
08.06.2009, 17:24
Что такое heapAlloc и heapFree - смотри тут http://msdn.microsoft.com/en-u... S.85).aspx

Судя по всему это то же самое, но более навороченное. Т.е. сначала ты выделяешь некий дескриптор пул памяти, а потом в этом пуле выделаешь память. Описание не читал, но скорее всего ради того, чтобы потом можно было целиком удалять пул и не заморачиваться с удалением результата каждого malloc'а - все более-менее приличные программы внутре себя содержат подобные менеджеры памяти, а тут они решили это вытащить в ситему

Работать точно так же. Выделяешь один heap, затем в нём делаешь кучу heapMalloc'ов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2009, 17:24

Работа с динамической памятью
Корректно ли организованна работа с памятью? Функция workWith2DArray осуществляет некоторую работу, используя созданный вовне двумерный...

Работа структур с динамической памятью
Здравствуйте! Решил немного поэкспериментировать с тем чтобы положить структурную переменную в динамическую память, а дальше оперировать...

Работа с динамической памятью в цикле
Всем привет. Есть переменная data, созданная динамически На каждой итерации цикла в нее записывается информация char* data =...

Работа с динамической памятью через указатели.
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Есть такая задача: Создать массив из N целых чисел, N вводит...

Строки: работа с динамической памятью, перегруженные конструкторы
Привет! Есть задача: Разработать класс String, который в дальнейшем будет использоваться для работы со строками. Класс должен...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru