OFF: вот немного по эксперементировал:)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Romario 07 июля 2003 г. 18:16
В ответ на: имхо malloc'oм в нересурсоемких приложениях следует пользоваться когда эта выделяемая память расходуется относительно быстро(+) отправлено Romario 07 июля 2003 г. 16:17

Вот дампы кучи при работе программы.
Пользователь выбирает программу и в соответсвии с выбранной программой
приходят данные которые размещаются в куче.
Существует FIFO буфер на 8 программ. Далеее показаны дампы кучи после
X числа выбранных программ. Как выдно дальше 14 сегментов дело не пошло.


8 выборок
SEG 1: 0x030EB7BA <- 0x030EB8CA ->0x030EB91A Len=0x44 (FREE)
SEG 2: 0x030EB8CA <- 0x030EB91A ->0x030EB9E2 Len=0xBC (busy)
SEG 3: 0x030EB91A <- 0x030EB9E2 ->0x030EBC6E Len=0x280 (busy)
SEG 4: 0x030EB9E2 <- 0x030EBC6E ->0x030EBD06 Len=0x8C (busy)
SEG 5: 0x030EBC6E <- 0x030EBD06 ->0x030EBDCE Len=0xBC (busy)
SEG 6: 0x030EBD06 <- 0x030EBDCE ->0x030EBE76 Len=0x9C (busy)
SEG 7: 0x030EBDCE <- 0x030EBE76 ->0x030EBECA Len=0x48 (FREE)
SEG 8: 0x030EBE76 <- 0x030EBECA ->0x030EBF62 Len=0x8C (busy)
SEG 9: 0x030EBECA <- 0x030EBF62 ->0x030EBFFA Len=0x8C (busy)
SEG 10: 0x030EBF62 <- 0x030EBFFA ->0x030EC13A Len=0x134 (FREE)
SEG 11: 0x030EBFFA <- 0x030EC13A ->0x030EC1F2 Len=0xAC (busy)
SEG 12: 0x030EC13A <- 0x030EC1F2 ->0x00000000 Len=0x45BC (FREE)

23 выборок
SEG 1: 0x030EB7BA <- 0x030EB87A ->0x030EB8B2 Len=0x2C (busy)
SEG 2: 0x030EB87A <- 0x030EB8B2 ->0x030EB976 Len=0xB8 (busy)
SEG 3: 0x030EB8B2 <- 0x030EB976 ->0x030EB9A6 Len=0x24 (busy)
SEG 4: 0x030EB976 <- 0x030EB9A6 ->0x030EB9E2 Len=0x30 (FREE)
SEG 5: 0x030EB9A6 <- 0x030EB9E2 ->0x030EBC6E Len=0x280 (busy)
SEG 6: 0x030EB9E2 <- 0x030EBC6E ->0x030EBCF6 Len=0x7C (busy)
SEG 7: 0x030EBC6E <- 0x030EBCF6 ->0x030EBD8E Len=0x8C (busy)
SEG 8: 0x030EBCF6 <- 0x030EBD8E ->0x030EBDF6 Len=0x5C (busy)
SEG 9: 0x030EBD8E <- 0x030EBDF6 ->0x030EBEF2 Len=0xF0 (FREE)
SEG 10: 0x030EBDF6 <- 0x030EBEF2 ->0x030EBF8A Len=0x8C (busy)
SEG 11: 0x030EBEF2 <- 0x030EBF8A ->0x00000000 Len=0x4824 (FREE)

41 выборок
SEG 1: 0x030EB7BA <- 0x030EB932 ->0x030EB9BA Len=0x7C (busy)
SEG 2: 0x030EB932 <- 0x030EB9BA ->0x030EB9E2 Len=0x1C (FREE)
SEG 3: 0x030EB9BA <- 0x030EB9E2 ->0x030EBC6E Len=0x280 (busy)
SEG 4: 0x030EB9E2 <- 0x030EBC6E ->0x030EBD9E Len=0x124 (FREE)
SEG 5: 0x030EBC6E <- 0x030EBD9E ->0x030EBE4A Len=0xA0 (busy)
SEG 6: 0x030EBD9E <- 0x030EBE4A ->0x030EBEE2 Len=0x8C (busy)
SEG 7: 0x030EBE4A <- 0x030EBEE2 ->0x030EBF8A Len=0x9C (FREE)
SEG 8: 0x030EBEE2 <- 0x030EBF8A ->0x030EC036 Len=0xA0 (busy)
SEG 9: 0x030EBF8A <- 0x030EC036 ->0x030EC0F6 Len=0xB4 (busy)
SEG 10: 0x030EC036 <- 0x030EC0F6 ->0x030EC1AE Len=0xAC (busy)
SEG 11: 0x030EC0F6 <- 0x030EC1AE ->0x030EC276 Len=0xBC (busy)
SEG 12: 0x030EC1AE <- 0x030EC276 ->0x030EC33E Len=0xBC (busy)
SEG 13: 0x030EC276 <- 0x030EC33E ->0x00000000 Len=0x4470 (FREE)

63 выборок
SEG 1: 0x030EB7BA <- 0x030EB862 ->0x030EB8FA Len=0x8C (busy)
SEG 2: 0x030EB862 <- 0x030EB8FA ->0x030EB962 Len=0x5C (busy)
SEG 3: 0x030EB8FA <- 0x030EB962 ->0x030EB98E Len=0x20 (FREE)
SEG 4: 0x030EB962 <- 0x030EB98E ->0x030EB9BE Len=0x24 (busy)
SEG 5: 0x030EB98E <- 0x030EB9BE ->0x030EB9E2 Len=0x18 (FREE)
SEG 6: 0x030EB9BE <- 0x030EB9E2 ->0x030EBC6E Len=0x280 (busy)
SEG 7: 0x030EB9E2 <- 0x030EBC6E ->0x030EBD06 Len=0x8C (busy)
SEG 8: 0x030EBC6E <- 0x030EBD06 ->0x030EBF52 Len=0x240 (FREE)
SEG 9: 0x030EBD06 <- 0x030EBF52 ->0x030EBFEA Len=0x8C (busy)
SEG 10: 0x030EBF52 <- 0x030EBFEA ->0x030EC08A Len=0x94 (busy)
SEG 11: 0x030EBFEA <- 0x030EC08A ->0x030EC122 Len=0x8C (busy)
SEG 12: 0x030EC08A <- 0x030EC122 ->0x030EC1EA Len=0xBC (busy)
SEG 13: 0x030EC122 <- 0x030EC1EA ->0x00000000 Len=0x45C4 (FREE)


дальше мне надоело:))

Так что придерживаюсь мнения что malloc не портит картины а упрощает
написание ПО. Ессно при грамотном его использовании.

а не при таком (с) DASM.



char *ptr[100];
char *x;
for (int i = 0; i < 256; i++) {
ptr[i] = (char *) malloc (1);
}

for (int i = 0; i < 256; i+=2) {
free (ptr[i]);
}

x = (char *) malloc (2); // облом

случай приведен специально чтобы угробить кучу.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru