Завтра с утра попробую увеличить размер блока.
И настало утро...
1. Программа слегка модифицирована: увеличен размер выделяемого блока и два оператора вывода сделаны более (IMHO) удобочитаемыми.
  ...
#include <iostream>
#include <exception>
/* gcc 4.4.3. Target: x86_64-linux-gnu */
int main ()
{
  const size_t Mb = 1048576;
  const size_t size = 2048;
  int *ptr[size];
  const size_t num = 1048576*1024;    // YuG
  size_t Alloc = 0;
  try
  {
    for (size_t i = 0; i < size; i++)
    {
      ptr[i]= new int[num];
      for (size_t j = 0; j < num; j++)
        ptr[i][j] = 0;
      Alloc += num * sizeof(int);
      std::cout << i+1 << "   ptr: " << ptr[i] << "   Alloc: " << (Alloc/Mb) <<" Mb" << std::endl;   // YuG
    }
  }
  catch (std::exception &e)
  {
     std::cout << "std::exception: " << e.what() << std::endl;   // YuG
  }
  return 0;
}
 
  2. Сведения о системе:
bash-3.2$ uname -a
Linux rhws5 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 
x86_64 x86_64 x86_64 GNU/Linux
bash-3.2$ free
             total       used       free     shared    buffers     cached
Mem:      
16427236     139640   16287596          0        712      12020
-/+ buffers/cache:     126908   16300328
Swap:      8159224     113772    8045452
bash-3.2$
3. компиляция:
bash-3.2$ gmake
/opt/gcc-4.1.2/bin/g++ -g -DNO_PRAGMA_ONCE -DUNIX_PLATFORM=1 -DUNIX_ENV=1 -DDEBUG -D_REENTRANT -Wno-multichar -c test.cpp -o test.o
/opt/gcc-4.1.2/bin/g++ -o test test.o -D_REENTRANT -g
Я использовал наш стандартный makefile для примеров.
Напомню, что gcc у нас - 4.1.2.
4. Результат теста:
bash-3.2$ ./test
1   ptr: 0x2aba83894010   Alloc: 4096 Mb
2   ptr: 0x2abb83896010   Alloc: 8192 Mb
3   ptr: 0x2abc83897010   Alloc: 12288 Mb
4   ptr: 0x2abd83898010   Alloc: 16384 Mb
5   ptr: 0x2abe83899010   Alloc: 20480 Mb
std::exception: St9bad_allocbash-3.2$
- catch сработал правильно