Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 07.11.2014
Сообщений: 3
1

Динамическое выделение памяти. Куча

07.11.2014, 17:03. Показов 977. Ответов 4
Метки нет (Все метки)

Сказали написать "свою" кучу. На примере malloc, free (которые используются в С) и new, delete (С++). реализовать надо в виде блоков, которые будут связными списками. Куча статична. (то есть задаем конкретное количество байт и она не расширяется) также, если пользователь выделил какое-то количество памяти, то 4 байта в блоке должны уйти в заголовок. и при очистке блока должно вроде как должны зарезервировать 4 байта. то есть если куча на 100 байт, то доступно будет 92(если честно я плохо поняла манипуляции с этими байтами, но если кто-то сталкивался, объясните пожалуйста) хочется найти какие-нибудь исходники malloc free new delete... чтобы посмотреть как это все можно реализовать. или четкий алгоритм. т.к. к сожалению доходит пока что туго... вот начало программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
struct Block
{
        Block* next;
        int size;
        char data[1];
};
class Heap
{
        Block* first;
public:
        Heap(int size)
        {
                char * p = new char[size];
                first = (Block*)p;
                first->next = nullptr;
                first->size = size;
...
        };
функции char* alloc(int n);
void free(char* p);
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2014, 17:03
Ответы с готовыми решениями:

Распределение памяти. Динамическое выделение памяти
an-1 an-2 ... a2

Динамическое выделение памяти
Дан такой код:#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int...

Динамическое выделение памяти
Здравствуйте! Помогите пожалуйста, мне задали сделать чтобы в выделенном (выделить не удалось,...

Динамическое выделение памяти
Уважаемые программисты!!!! Подскажите как выделить память для двумерного массива. Заранее спасибо!!!

4
5 / 3 / 1
Регистрация: 06.11.2014
Сообщений: 33
07.11.2014, 18:19 2
OlyaR, Кучи разные бывают вы простую бинарную хотите?
0
Эксперт С++
4967 / 3074 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
07.11.2014, 18:28 3
Лучший ответ Сообщение было отмечено OlyaR как решение

Решение

Цитата Сообщение от OlyaR Посмотреть сообщение
хочется найти какие-нибудь исходники malloc free new delete...
http://files.osdev.org/mirrors... m/malloc.c
http://g.oswego.edu/dl/html/malloc.html

Цитата Сообщение от OlyaR Посмотреть сообщение
Сказали написать "свою" кучу.
"Кучу" написать нельзя, можно написать аллокатор. Плюнь в лицо тому кто это сказал с этими словами.
1
0 / 0 / 0
Регистрация: 07.11.2014
Сообщений: 3
07.11.2014, 21:07  [ТС] 4
КамазПодарков, я написала выше, что с помощью связных списков. То есть как я понимаю есть "связанные" блоки.
0
5 / 3 / 1
Регистрация: 06.11.2014
Сообщений: 33
07.11.2014, 21:25 5
OlyaR, сори мы про разные кучи)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2014, 21:25

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Динамическое выделение памяти
Есть следующее объявление #include&lt;iostream&gt; #define MAX 1000 //======================= int ...

Динамическое выделение памяти
Не могу разобраться с динамическим выделением памяти. Объект - учреждение. Имеет параметры -...

Динамическое выделение памяти
Всем привет, читал про динам. выделение памяти и тут возник вопрос. Так как для новичков пишут...

Динамическое выделение памяти
Добрый день. Подскажите как реализовать, что бы память под массив выделялась динамически : ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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