How to code my program to has flexibility to receive custom allocator in advance?
I coded some allocators, but not sure whether I will really need it.
 However, I know for sure that if my custom allocator will be plugged-in, I want to use it in some certain parts.    
Example
For example, int* B::db should use custom allocator (myNew/myDelete),
 while all std::vector should use standard allocator.
While I still don't plug my custom allocator, I wish my program will use standard new/delete as default.     
#define myNew new
#define myDelete delete
class B{ //B should not be a template class
    int* db=nullptr;
    std::vector<float> something; //<- let it use default new/delete
    public: B(){
        db=myNew int[5];   //work like "db=new int[5];"
    }
    public: ~B(){
        myDelete[] db;     //work like "delete[] db;"
    }
};
If I want plug a custom allocator later, I can just change the #define.     
Note: B should not be a template class.
Question
I am not sure if this is a correct way.  I am still very new to allocator.
I also want to avoid macro if possible.
Is it a good solution?  Are there solutions without macro?
I can let my program just use new/delete as default, and I can refactor it later.
However, it will probably be a mental-breaking work in the future.
Note: Most Q/A seem to focus on overloading the global new/delete. That is not what I want. :-
- overloading new/delete
- How to properly replace global new & delete operators
- Using operator new and operator delete with a custom memory pool/allocator
Sorry if this question is too newbie.
I haven't found any good tutorial/information about using allocator in real practice.      
I have also read (they are just theory of allocator + code) :-
 
     
    