out of memory allocating 65536 bytes

0

Witam!
Przy kompilacji mam problem spowodowany właśnie błędem "out of memory allocating 65536 bytes".
Mój program ma prostą budowę: deklaracja zestawu 256 zmiennych const char i następnie zapis pewnej ich kombinacji do pliku.
Coś takiego:

#include <iostream>
#include <fstream>
#include "ascii.h"

using namespace std;

int main()
{
    fstream file;
    file.open("plik.txt", ios::out);
    
    file
    #include "dane.h"
    ;  
    file.close();
    return 0;
}

W ascii.h mam właśnie te stałe znakowe, a dane.h mam postaci: <<stala_a<<stala_b<<stala_a<<stala_d ... itd.
Tylko dane.h jest stosunkowo spore, w ten spsób jest ustawionych ok. 500000 znaków... Właśnie myślę, że tu jest problem, tylko nie mam pojęcia jak go rozwiązać, żeby mój program się skompilował.

1

<<stala_a<<stala_b<<stala_a<<stala_d ... itd.
Tylko dane.h jest stosunkowo spore, w ten spsób jest ustawionych ok. 500000 znaków...

Tablice?

2

dokładnie. wysypałeś kompilator tak głębokim wywołaniem operatora. zrób normalną tablicę i przeleć ją w pętli.

0

Aaa, no tak... coś mi tam świta. Bo operator << jako efekt swojego działania zwraca obiekt chwilowy, żeby możliwe było użycie kaskadowe tego operatora, a jeżeli to był taki długi ciąg wywołań to już było po prostu za dużo tych obiektów dla kompilatora, chyba dobrze myślę?
W każdym razie przerobiłem na tablicę i działa rzeczywiście bez problemu.
Dziękuję za pomoc.

0
radoslav006 napisał(a)

Aaa, no tak... coś mi tam świta. Bo operator << jako efekt swojego działania zwraca obiekt chwilowy, żeby możliwe było użycie kaskadowe tego operatora, a jeżeli to był taki długi ciąg wywołań to już było po prostu za dużo tych obiektów dla kompilatora, chyba dobrze myślę?

Źle myślisz. Z tego co pamiętam to << zwraca referencję do ostream więc cały czas przekazywany jest ten sam obiekt, czyli w tym przypadku standardowe wyjście.

3

Kompilator się wywalił, bo nie był wstanie uciągnąć tak ciężkiego WTF'a :D .

1 użytkowników online, w tym zalogowanych: 0, gości: 1