реклама на сайте
подробности

 
 
> Менеджер динамической памяти в IAR, как подменить на свой?
Andy Mozzhevilov
сообщение Apr 21 2009, 14:58
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Функции malloc, free, realloc, calloc реализованы в стандартной библиотеке, чтобы ими пользоваться включаем stdlib.h:
Код
#include <stdlib.h>

void main (void)
{
    void * pSlon;

    pSlon = malloc(1000);
}

Вопрос: как, не внося изменения в системный stdlib.h, объяснить IAR-у чтобы он использовал мою реализацию функий malloc, free, realloc, calloc взамен библиотечных? То есть чтобы исходник выглядел так же, как и выше, но реализация функций была заменена?
Есть какой-то кошерный способ это сделать?


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
HARMHARM
сообщение Apr 21 2009, 15:36
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Я вообще-то не очень разбирался, но есть два метода:
1) Наглый:
#include <stdlib.h>

void *myMalloc(size_t size) {
// log
return malloc(size);
}

void myFree(void *ptr) {
// log
free(ptr);
}

#define malloc(size) myMalloc(size)
#define free(ptr) myFree(ptr)

2) Правильный:
Можно почитать в главе "Overriding library modules" в ARM® IAR C/C++ Compiler Reference Guide. Суть в подключении своих функций, они должны в командной строке линкера быть перед библиотечными. Вы же cstartup стандартный заменяете?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st July 2025 - 07:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016