BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Регионално базирано управление на паметта
frame_buffer
Публикувано на: 20-12-2024, 22:58
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 4
Регистриран на: 18.12.24



Наскоро научих стратегия за разпределяне на RAM, която значително опростява програмите. Вие разпределяте и освобождавате блокове от RAM, а не единични обекти. Например:

CODE
void funktsiya() {
  int * nomer_1 = malloc(sizeof(int));
  int * nomer_2 = malloc(sizeof(int));
  int * nomer_3 = malloc(sizeof(int));
  free(nomer_1);
  free(nomer_2);
  free(nomer_3);
}


става:

CODE
void funktsiya() {
  Arena * arena = create_arena(1024);
  int * nomer_1 = arena_allocate(arena, sizeof(int));
  int * nomer_2 = arena_allocate(arena, sizeof(int));
  int * nomer_3 = arena_allocate(arena, sizeof(int));
  free_arena(arena);
}


Ето референтна реализация от YouTuber Tsoding
https://github.com/tsoding/arena

Някой използва ли вече това? Намерихте ли го за полезно?
PMEmail Poster
Top
ici
Публикувано на: 21-12-2024, 03:13
Quote Post


Group Icon
Име: Ивайло Илчев
Група: VIP
Ранг: Почетен член

Мнения: 18726
Регистриран на: 06.06.04



Прилича на "Memory pool". Честно казано нищо полезно не виждам в това. Аз пиша основно за ARM Cortex-M със Newlib Nano и леко модифициран heap manager + алокатори за C++ и въобще не виждам смисъл.

https://en.wikipedia.org/wiki/Memory_pool


--------------------
Ние не сме в една лодка, ние сме в една буря. Лодките са различни.

Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп.
PMEmail PosterUsers Website
Top
dvader
Публикувано на: 21-12-2024, 10:27
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5264
Регистриран на: 12.07.05



Крайно време е да разделим раздел "С/С++" на "С" и "С++"...


--------------------
I find your lack of faith disturbing
PM
Top
frame_buffer
Публикувано на: 21-12-2024, 11:49
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 4
Регистриран на: 18.12.24



QUOTE (ici @ 21-12-2024, 03:13)
Прилича на "Memory pool". Честно казано нищо полезно не виждам в това. Аз пиша основно за ARM Cortex-M със Newlib Nano и леко модифициран heap manager + алокатори за C++ и въобще не виждам смисъл.

https://en.wikipedia.org/wiki/Memory_pool

Това наистина изглеждат като синонимни понятия. @ici С Arduino ли работиш или нещо друго?
PMEmail Poster
Top
ici
Публикувано на: 21-12-2024, 13:05
Quote Post


Group Icon
Име: Ивайло Илчев
Група: VIP
Ранг: Почетен член

Мнения: 18726
Регистриран на: 06.06.04



STM32, Stm32Cube, FreeRTOS

ПП. Терминала също е мой. Python, PySide6

Това мнение е било редактирано от ici на 21-12-2024, 13:09

Прикачена картинка (Кликнете на картинката, за да я увеличите!)
Прикачена картинка


--------------------
Ние не сме в една лодка, ние сме в една буря. Лодките са различни.

Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп.
PMEmail PosterUsers Website
Top
SuN
Публикувано на: 21-12-2024, 23:58
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 13019
Регистриран на: 27.01.05



QUOTE
Някой използва ли вече това?

Не заделям памет ръчно. Само декларирам какво ще ми трябва, да речем 100-на обекта от еди-къде си (конструктора да му мисли), а останалото са килобайти локални променливи.

Ползвам понякога malloc, но последния път сигурно е бил преди година-две icon_redface.gif

Честно казано, не разбирам за какво толкова всички я ползват тази ръчно заделена динамична памет, освен ако не се изнася нещо на черно да се препродава... Или имаме курсова работа по управление на паметта icon_smile.gif


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
PxL
Публикувано на: 25-12-2024, 08:02
Quote Post


Group Icon
Име: Димитър Т. Димитров
Група: VIP
Ранг: Почетен член

Мнения: 3586
Регистриран на: 26.04.05



Къде е това arena_allocate ще трябва да си ги освободи вътрешно така или иначе и разликата ще е никаква.

Това мнение е било редактирано от PxL на 26-12-2024, 21:56


--------------------
void putchar(char c);int main(){int x,c=1,i;for(i=0;(x="PxLY2H4:2E;7231?=68255A5S5P9N:N9O84111H861I85111G9N:O811O812M<G33911EAEDBECE22169D1=2k"[i+++3]);)while(x-->'0')putchar((!(++c%'('))?0x0a:33^(i&1));}
PMEmail PosterUsers Website
Top
Дон Реба
Публикувано на: 30-12-2024, 09:11
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 10305
Регистриран на: 11.11.06



QUOTE (SuN @ 21-12-2024, 23:58)
QUOTE
Някой използва ли вече това?

Не заделям памет ръчно.

и аз съм така, ако ми затрябва някакъва памет просто си инстанцирам динамичен масив с нужния размер
PM
Top
ici
Публикувано на: 30-12-2024, 09:49
Quote Post


Group Icon
Име: Ивайло Илчев
Група: VIP
Ранг: Почетен член

Мнения: 18726
Регистриран на: 06.06.04



То е същото. Ако не си сложил собствен алокатор при създаването на инстанцията се използва този по подразбиране, който използва хийпа. Ако хийпа е ограничен и стека е малък ще трябва да измислиш нещо друго. Аз например правих алокатор за външна допълнителна памет за по-големи неща.

Прикачена картинка (Кликнете на картинката, за да я увеличите!)
Прикачена картинка


--------------------
Ние не сме в една лодка, ние сме в една буря. Лодките са различни.

Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп.
PMEmail PosterUsers Website
Top
ici
Публикувано на: 30-12-2024, 09:54
Quote Post


Group Icon
Име: Ивайло Илчев
Група: VIP
Ранг: Почетен член

Мнения: 18726
Регистриран на: 06.06.04



Ето например стека за най-тежките процеси с много вход/изход са 4к 32 битови думи, хийпа е 190к байта, а от външната памет са оставени 4М байта за по-големи неща.

Прикачена картинка
Прикачена картинка


--------------------
Ние не сме в една лодка, ние сме в една буря. Лодките са различни.

Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп.
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0