>
>Думаю правильным было бы использование следующей конструкции:
>#ifdef DEBUG
>#define MALLOC(ptr,size) do { \
>ptr = malloc (size); \
>pthread_mutex_lock(&gMemMutex); \
>gMemCounter++; \
>pthread_mutex_unlock(&gMemMutex); \
>while (0)
>#else
>#define MALLOC(ptr,size) ptr = malloc (size)
>#endif :)
Респект абсолютный и полный, но недочёт есть и тут :) - do while - абсолютно лишне. Окончательный вариант:
#ifdef DEBUG
#define MALLOC(ptr,size) { \
ptr = malloc (size); \
pthread_mutex_lock(&gMemMutex); \
gMemCounter++; \
pthread_mutex_unlock(&gMemMutex); \
}
#else
#define MALLOC(ptr,size) ptr = malloc (size)
#endif
Прошу отметить, что суть вопроса не в правильности составления макроса, а в принципе определения утечки :)