Почему то следующий код выдаёт исключение bad_alloc, после создания ~ 22 000 экземпляров массива, число может немного меняться и от размера создаваемого массива не зависит. С выделением памяти проблем вроде бы быть не должно. Собирал gcc-4.1 и 4.3. Собранный MinGW под виндой работает нормально. Собственно если есть ошибка то где она?
#include <iostream> 
using namespace std;
void munic(int* res);
int cntErr;
int main(int argc, char** argv)
{
    cntErr = 0;
    int cntSize = 30000;
    int* res;
    for(int cnt = 0; cnt < cntSize; cnt++)
    {
        cout << cnt << '\t';
        munic(res);
    }
    return 0;
}
void munic(int* res)
{
    try
    {
        int arrSize = 100;
        res = new int(arrSize);
        for(int cnt = 0; cnt < arrSize; cnt++)
        {    
            res[cnt] = 0;
        }
    }
    catch(bad_alloc& err)
    {
        cout << err.what() << '\t' << cntErr << '\n';
        cntErr++;
    }
}






