Использование рычагов Malloc

По вопросам, связанным с Epic, вы можете обратиться к App Orchard TS за конкретной помощью, однако, если я понимаю ваш вопрос, проблема скорее в разнице между пользователем, выполняющим запуск SMART, и PCP пациента.

Если пациент лечится кем-то, кроме его PCP, то токен в запуске SMART будет для практикующего в настоящее время, предоставляющего лечение (или, в более общем случае, человека, выполняющего запуск, который может быть выставлением счетов, регистрацией или другой персонал больницы), в то время как Patient.careProvider будет указывать на PCP. Patient.careProvider не является поставщиком для текущей встречи (то есть для Encounter.participant или для CareTeam, связанной с Encounter).

5
задан Edmund 13 December 2009 в 07:01
поделиться

5 ответов

6
ответ дан 13 December 2019 в 22:19
поделиться
#undef malloc
#define malloc my_malloc

Просто помещенный, что наверху любого из файлов необходимо сделать это для.

-3
ответ дан 13 December 2019 в 22:19
поделиться

Согласно http://www.gnu.org/software/libtool/manual/libc/Hooks-for-Malloc.html, вот то, как сделать это с библиотеками GCC.

/* Prototypes for __malloc_hook, __free_hook */
 #include <malloc.h>

 /* Prototypes for our hooks.  */
 static void my_init_hook (void);
 static void *my_malloc_hook (size_t, const void *);
 static void my_free_hook (void*, const void *);

 /* Override initializing hook from the C library. */
 void (*__malloc_initialize_hook) (void) = my_init_hook;

 static void
 my_init_hook (void)
 {
   old_malloc_hook = __malloc_hook;
   old_free_hook = __free_hook;
   __malloc_hook = my_malloc_hook;
   __free_hook = my_free_hook;
 }

 static void *
 my_malloc_hook (size_t size, const void *caller)
 {
   void *result;
   /* Restore all old hooks */
   __malloc_hook = old_malloc_hook;
   __free_hook = old_free_hook;
   /* Call recursively */
   result = malloc (size);
   /* Save underlying hooks */
   old_malloc_hook = __malloc_hook;
   old_free_hook = __free_hook;
   /* printf might call malloc, so protect it too. */
   printf ("malloc (%u) returns %p\n", (unsigned int) size, result);
   /* Restore our own hooks */
   __malloc_hook = my_malloc_hook;
   __free_hook = my_free_hook;
   return result;
 }

 static void
 my_free_hook (void *ptr, const void *caller)
 {
   /* Restore all old hooks */
   __malloc_hook = old_malloc_hook;
   __free_hook = old_free_hook;
   /* Call recursively */
   free (ptr);
   /* Save underlying hooks */
   old_malloc_hook = __malloc_hook;
   old_free_hook = __free_hook;
   /* printf might call free, so protect it too. */
   printf ("freed pointer %p\n", ptr);
   /* Restore our own hooks */
   __malloc_hook = my_malloc_hook;
   __free_hook = my_free_hook;
 }

 main ()
 {
   ...
 }
5
ответ дан 13 December 2019 в 22:19
поделиться

Если Ваши вызовы функции sbrk непосредственно можно просто назвать это malloc и удостовериться, что это связано в перед malloc библиотеки. Это работает над всеми Ose типа Unix. Поскольку окна видят, там способ переопределить malloc во время ссылки в Windows?

Если Ваша функция будет оберткой вокруг malloc библиотеки, то #define предложение Alex будет работать.

1
ответ дан 13 December 2019 в 22:19
поделиться

Просто обратите внимание, что my_malloc_hook ( ) решение не работает в многопоточной программе - см. http://www.phpman.info/index.php/man/malloc_hook/3 .

1
ответ дан 13 December 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: