newの例外の問題がなんなのか良くわからんが
template<class T>class vAlloc{
public:
 T *m_obj;
 vAlloc() : m_obj(NULL){};
 vAlloc(int size) : m_obj(NULL){
  Alloc(size);
 };
 ~vAlloc(){
  delete []m_obj;
 };
 Alloc(int size){
  delete []m_obj;
  try {
   m_obj = new T[size];
  } catch(std::bad_alloc) {
   cerr << "メモリを増設してください" << endl;
   m_obj = NULL;
   exit(0);
  }
 };
};
こういうクラスを作っといて
vAlloc<char> str1(100);
strcpy(str.m_obj, "Hello");
こうやって利用すればいいんでないの?