Boost logo

Ublas :

From: Hongyu Miao (jackymiao_at_[hidden])
Date: 2008-02-11 18:42:34


Hi, All
    I'm wondering how to handle the memory allocation exception. For example,

         int blocksize = 1000000;
         ublas::vector<double> myvector(0);
         myvector.resize(blocksize);

If the system does not have enough memory, an exception will be triggered by
the last line of the codes. I tried the try/catch as follows

          try
          {
              myvector.resize(blocksize);
              if (blocksize != myvector.size())
                  throw "Memory allocation failure!";
          }
          catch(char* str)
          {
               std::cout << str << std::endl;
          }

However, I can do this in a much simpler way like:

              myvector.resize(blocksize);
              if (blocksize != myvector.size())
                  std::cout << "Memory allocation failure!" << std::endl;

What's the difference between these two methods? And does UBLAS have a better
built-in solution for this?

Thanks very much,
H.M.