I have djgpp g++ compiler 4.0.0 running on Windows. 
To compile I use
gpp -o file -O2 file.cpp

After executing following code
---------------------
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cmath>
using namespace std;


int M;

struct pnt{
        char c;
        int x;
        char dir;
};

vector<pnt> a;

pnt tmp;

int main(){
        M = 1000000;
        for(int i = 0;i<M;i++){
                tmp.c = 'S';
                tmp.x = 1;
                tmp.dir = 0;
                a.push_back(tmp);
                tmp.x = 2;
                tmp.dir = 1;
                a.push_back(tmp);
        }
        return 0;
}
---------------------
there will be memory bad_alloc exception

------------
terminate called after throwing an instance of 'std::bad_alloc'
  what():  St9bad_alloc
Abort!
Exiting due to signal SIGABRT
Raised at eip=0000e64e
eax=000d6d64 ebx=00000120 ecx=00000000 edx=00000000 esi=00000001 edi=00056f58
ebp=000d6e10 esp=000d6d60 program=D:\MYCONT~1\WROC\2\TMP.EXE
cs: sel=08ff  base=01cd0000  limit=0194ffff
ds: sel=0907  base=01cd0000  limit=0194ffff
es: sel=0907  base=01cd0000  limit=0194ffff
fs: sel=08d7  base=0000e270  limit=0000ffff
gs: sel=0917  base=00000000  limit=0010ffff
ss: sel=0907  base=01cd0000  limit=0194ffff
App stack: [000d6f58..00056f58]  Exceptn stack: [00056eac..00054f6c]

Call frame traceback EIPs:
  0x0000e574
  0x0000e64e
  0x0000b3fb
  0x00020e5e
  0x0001c0f4
  0x0001c12e
  0x0001bce3
  0x000193dd
  0x000214f7
  0x000016eb
  0x0000abd8
-----------

Of course, while using older gcc (i.e. 3.2.3) code works fine.
There must be the same problem on g++ 4.0.3 at Linux platform.


-- 
           Summary: bad allocation while adding new elements to vector
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: algorithmus at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26825

Reply via email to