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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
bugernol
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 4
#1

Аналог malloc - C++

18.11.2009, 21:57. Просмотров 2255. Ответов 6
Метки нет (Все метки)

Необходимо релизовать свой malloc.Интересует меня следующее: как malloc опирирует памятью? Я понимаю как составляется список блоков памяти. Но каким образом он получает эту память из кучи? Ведь перед ее разбиением на части, ее надо как то зарезервировать. Желательно нужен самый машинно приближенный способ, не выходящий за рамки Си.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2009, 21:57     Аналог malloc
Посмотрите здесь:

new на malloc - C++
Измените выделение памяти на C - malloc,и почему у меня не открывает текстовый файл? #include "stdafx.h" #include <string.h> ...

Malloc vs new - C++
Здравствуйте. Вникаю в ручное управление памятью. Абзац из книги "C++ для профессионалов" не совпадает с моим представлением...

new, malloc, - C++
Добрый день. При роботе с дин. памяттю в конец выделяемой памяти добавляеться какойто бред, чтото топа "<<<ЮЮЮээээ". Почему так...

malloc - C++ Linux
Народ, кто-нить может объяснить какие есть недостатки у этой функции, всегда юзал, а тут говорят, что это очень нехорошо, вот и стало...

new vs malloc - C++
Чем new безопаснее(или лучше?) malloc?

New и malloc - C++
Если смотреть на выделение памяти для арифметических типов уступает ли функций new malloc'у в скорости? Если да, то насколько это критично?

malloc vs new - C++
Доброго времени суток. Когда я для выделения памяти пользовался malloc/calloc и освобождал с помощью free, у меня вылетала ошибка: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1372 / 883 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 1
18.11.2009, 22:22     Аналог malloc #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
static char buff[1024];
static char *p = buff;
static size_t free_size = 1024;
 
void *my_malloc(size_t size){
    char *res = 0;
    if(free_size > size){
        res = p;
        p += size;
        free_size -= size;
    }else std::cout << "error\n";
 
    return res;
}
int main()
{
    char *p  =  (char*)my_malloc(sizeof(char)*7);
    char *p1 =  (char*)my_malloc(sizeof(char)*8);
    char *p2 =  (char*)my_malloc(sizeof(char)*10);
 
    strcpy(p,  "string");
    strcpy(p1, "Testing");
    strcpy(p2, "123456789");
 
    std::cout << p << std::endl;
    std::cout << p1 << std::endl;
    std::cout << p2 << std::endl;
 
    //---
    for(int i = 0; i < 30; ++i)
        std::cout << buff[i];
    return 0;
}
bugernol
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 4
19.11.2009, 15:51  [ТС]     Аналог malloc #3
Ой, и вправду) Что-то я краене сильно затупил.
Спасибо.
Evg
Эксперт CАвтор FAQ
17469 / 5707 / 362
Регистрация: 30.03.2009
Сообщений: 15,669
Записей в блоге: 26
19.11.2009, 16:02     Аналог malloc #4
Цитата Сообщение от bugernol Посмотреть сообщение
Ой, и вправду) Что-то я краене сильно затупил
Это скорее прототип malloc'а. Но если тебе нужен именно прототип (а не универсальная функция), то делать лучше всего именно так, как писал ISergey
bugernol
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 4
19.11.2009, 17:23  [ТС]     Аналог malloc #5
Фактически нужен realloc,реализованный есесно не в точности как стандартный, а со всякими полезными "наворотами", как собственно сделать это я представляю, много всякой инфы начитался) Однако видимо "перечитался", наткнулся на некий вариант под Линукс, в нем была заюзана sbrk... В итоге стал искать некую ф-ию в винде резервирующую память. И как-то даже в голову не пришло, что создание массива символов из 20 элементов-это выдиление 20 байт из кучи)
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
19.11.2009, 17:33     Аналог malloc #6
В винде вместо sbrk юзается HeapAlloc.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2009, 17:54     Аналог malloc
Еще ссылки по теме:

malloc() - C++
4to takoe malloc(), za4em nam ono nujno? pomogite=)))))))

malloc в С++ - C++
Подскажите пожалуйста как в данной программе выделить динамическую память с помощью malloc для объекта #include &lt;iostream&gt; ...

malloc/realloc - C++
есть следующий код: mmlist=(_mathmod*)malloc(sizeof(_mathmod)); *mmlist=_mathmod(mm); int i=0; ...

malloc vs. calloc - C++
Когда стоит использовать malloc , а когда calloc?

Malloc / calloc - C++
здравствуйте. Интересует такой вопрос : динамическая память. Когда мы выделяем память при помощи функции malloc то нас в универе учат...


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

Или воспользуйтесь поиском по форуму:
bugernol
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 4
10.12.2009, 17:54  [ТС]     Аналог malloc #7
Появился еще один вопрос:
Допустим у меня етсь ф-ия выделяющая память из кучи. Тобиш резервация char массива. Однако что если мне придется вызывать ее n раз?
C++
1
2
3
4
void mem()
{
char buff[80];
}
Вызову я это 10 раза, но результат то будет один. Динамическим размер как понимаю сделать нельзя. А выделять сразуже массив на 1000000...000 тоже будет очень не практично)
Хотя возможно я очень сильно туплю...
Yandex
Объявления
10.12.2009, 17:54     Аналог malloc
Ответ Создать тему
Опции темы

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