없으려나



이하 자세한 내용 추가


원래는 new delete 매크로로 정의 해서 썼는데(흔한 디버깅 파라미터 추가 같은거 때문에 말야)

생성자 호출 매크로(메모리 할당자 만들면서 필요해서)가 필요한 경우가 생겨서 말이야

val = new(address) 생성타입 잖아 그런데 이게 new가 매크로 정의 되어 있으면 문제가 되서 

지금은 NEW DELETE 를 사용하고 있음


문제가 되는 매크로 인데


#define _MACRO_CALL_CONSTRUCTOR(Address, Type) new(Address) Type



원래 편의상 하고 싶던거는 _MACRO_CALL_CONSTRUCTOR 가 하는 일을

#define _MACRO_CALL_CONSTRUCTOR  __pragma(push_macro("new"))  

 #undef new <- 이 부분이 방법이 안 보여.. 하긴 #define A   에서 A undef 하는 웃기는 형태가 나올 수 있어서 막았나 싶기도 해

(Address, Type) new(Address) Type

__pragma(pop_macro("new"))


push_macro로 두가지 기능을 여러번 쌓아 두는 방법은 일단 좀 아니다 싶고


대충 이런 형태로 쓰임



#if _DEF_USING_DEBUG_MEMORY_LEAK

#define _SAFE_NEW_ALIGNED_CACHELINE(Address, Type)                          

{                                                                          

    if(Address) _MACRO_CALL_DESTRUCTOR(Address);                            

    else UTIL::PRIVATE::aligned_malloc_dbg(Address, 1, _DEF_CACHE_SIZE, __FILE__, __LINE__);

                                                                           

    if(Address) _MACRO_CALL_CONSTRUCTOR(Address, Type);                    

}

#define _SAFE_DELETE_ALIGNED_CACHELINE(Address)                            

{                                                                          

    if(Address){                                                            

        _MACRO_CALL_DESTRUCTOR(Address);                                    

        UTIL::PRIVATE::aligned_free_dbg(Address);                      

        Address = NULL;                                                    

    }                                                                      

}


역슬러시는 다 날라가 보이니 이해해줘!