powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопросы по malloc()
16 сообщений из 16, страница 1 из 1
Вопросы по malloc()
    #38748116
xneo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Пишу в Keil под STM32 микроконтроллер на C/C++.
Такой вопрос, как узнать количество свободной памяти доступное для malloc() ?
Если это сделать не возможно то можно ли как-то переопределить функции malloc()/free() чтобы вести подсчёт самому?

Естественно лучше первый вариант.
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38748333
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть важный момент. Память - фрагментируется. И суммарно может свободной памяти хватать, но одним куском выделить не получится.
Т.е. что считать количеством свободной памяти?
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38748351
xneo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNЕсть важный момент. Память - фрагментируется. И суммарно может свободной памяти хватать, но одним куском выделить не получится.
Т.е. что считать количеством свободной памяти?

Это я понимаю. Мне нужно просто число свободных блоков для учёта чтобы отслеживать отсутствие утечек.
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38748381
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xneoТакой вопрос, как узнать количество свободной памяти доступное для malloc() ?выделить-освободить. Выделить больше-освободить. Выделить еще больше - освободить.
Как не смог выделить, значит достиг предела.

xneoЕсли это сделать не возможно то можно ли как-то переопределить функции malloc()/free() чтобы вести подсчёт самому?Читать документацию на свою платформу. Смотреть как организован рантайм в используемом компиляторе, потом заменять стандартную библиотеку.
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38748782
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xneoможно ли как-то переопределить функции malloc()/free() чтобы вести подсчёт самому?

кто ж запретит:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void *malloc(size_t size)
{
…
}

void free(void *p)
{
…
}
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38748795
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolfxneoможно ли как-то переопределить функции malloc()/free() чтобы вести подсчёт самому?

кто ж запретит:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void *malloc(size_t size)
{
…
}

void free(void *p)
{
…
}



есть трудности: ODR , но в принципе -- возможно.
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38749907
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

MasterZivRWolfпропущено...


кто ж запретит:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void *malloc(size_t size)
{
…
}

void free(void *p)
{
…
}



есть трудности: ODR , но в принципе -- возможно.

А есть ли аналогичные правила для Си ? Или подразумевается что они применяются к этому языку ?
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38750832
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryЗдравствуйте.

MasterZivпропущено...


есть трудности: ODR , но в принципе -- возможно.

А есть ли аналогичные правила для Си ? Или подразумевается что они применяются к этому языку ?


Они ровно одинаковые.
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38750942
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю что ответ на вопрос лежит в плоскости спецификации контроллера STM32.
Возможно и свободная память заведомо известна.
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38752097
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там вообще памяти маловато, есть ли смысл связываться с менеджером памяти? Может выделять все на стеке?

Тогда можно простой арифметикой угадать сколько памяти использовалось и сколько осталось.

Хотя, может быть подключена внешняя память через FSMC. Ее уже могут быть мегабайты и можно шикануть, но, наверное и вопрос бы не возник :)
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38752120
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати если подходить с транзактивной точки зрения то такие две операции
Код: plaintext
1.
2.
3.
if (getfreememory()>50000){
  p = malloc(5000);
}


для "посмотреть сколько" могут быть принципиально неверными ведь между
ними другой процесс может затребовать память.
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38752133
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonмежду ними другой процесс
Другой процесс на микроконтроллере?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38752176
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovmaytonмежду ними другой процесс
Другой процесс на микроконтроллере?..
Запросто.
Процессы не обязательно выполняются параллельно, можно приостановить один и начать выполнять другой.
Ну вспомни хотя бы TSR в досе которые вешались на IRQ. Запрашивать в них память на куче это конечно извращение, но вполне возможная вещь.
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38752293
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКстати если подходить с транзактивной точки зрения то такие две операции
Код: plaintext
1.
2.
3.
if (getfreememory()>50000){
  p = malloc(5000);
}



для "посмотреть сколько" могут быть принципиально неверными ведь между
ними другой процесс может затребовать память.

Проверка пудинга заключается в том, что его съедают (английская пословица)
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38752332
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovmaytonмежду ними другой процесс
Другой процесс на микроконтроллере?..

Я долго думал перед тем как писать поток/процесс но потом всё таки решил написать процесс.
Не суть важно как будет реализован конкурирующий вычислительный трафик. Будь это кооперативность,
прерывания или continuation. Но думаю что мемберы в топике поняли суть того что я хотел сказать.
...
Рейтинг: 0 / 0
Вопросы по malloc()
    #38752497
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда году в 96-97 гг. писал свой парсер - везде между блоками вставил getfreememory() /условно/. При прогоне на тестовых данных, очень помогало своевременно обнаружить ошибку.

Хотя, давно это было... вроде с тех пор, стандартный библиотеки Debug от MS VC сами научились такое делать. При запуске в Debug режиме, искать утечки памяти.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вопросы по malloc()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]