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

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

06.06.2009, 13:06. Показов 5461. Ответов 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
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 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
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 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
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 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
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru