Newsgroup: it.comp.lang.c++
Titolo: Limita la memoria?

Salve a tutti,
stò tentando di mandare in esecuzione un simulatore (chiaramente scritto in
C++, e i guru del NG sanno già a quale mi riferisco.... chiaramente quello
della mia tesi !!!).
E' possibile che riesca a saturare 128 Mb di RAM ?
Non ho algoritmi ricorsivi, e credo di far chiamare il distruttore al
momento giusto.
Controllando con una utility della mia ASUS monitoro che rimangono appena 4K
liberi dopo che il simulatore si pianta e mi spunta un errore del tipo:
Fault: access violation at 0x401dfa: read of address 0xffffffff
L'errore è sempre lo stesso, cioè voglio dire che gli indirizzi incriminati
sono sempre gli stessi.
Se fosse un problema di RAM (ammesso che lo sia) non dovrei trovare
indirizzi sempre diversi, visto che il programma dovrebbe (non so se è
effettivamente cosi) allocare la memoria per le variabili, gli oggetti e
tutto ciò che usa , scegliendo degli indirizzi iniziali in modo casuale?
Il debugger, contemporaneamente, si ferma sul file list.h, e precisamente in
queste zone:
  /....../
if (this != &x)
    {
        iterator first1 = begin();
        iterator last1 = end();
       ->>>> const_iterator first2 = x.begin(); <<<<<<--- PUNTO INCRIMINATO
        const_iterator last2 = x.end();
        while (first1 != last1 && first2 != last2) *first1++ = *first2++;
        if (first2 == last2)
            erase(first1, last1);
        else
            insert(last1, first2, last2);
  /....../
Non posso seguire mica tutte le centinaia di migliaia di iterazioni che
compie !!! Altrimenti alla fine avrei già i capelli bianchi.
;-)
Potete darmi una dritta?
Bye,
Sebastiano

   /....../
Sei sicuro che x, che immagino sia un argomento di un metodo di list,
rappresenti qualcosa di sensato?
Ciao,
Nicola

Salve a tutti,
stò tentando di mandare in esecuzione un simulatore (chiaramente scritto in
C++, e i guru del NG sanno già a quale mi riferisco.... chiaramente quello
della mia tesi !!!).
E' possibile che riesca a saturare 128 Mb di RAM ?
Non ho algoritmi ricorsivi, e credo di far chiamare il distruttore al
momento giusto.
Controllando con una utility della mia ASUS monitoro che rimangono appena 4K
liberi dopo che il simulatore si pianta e mi spunta un errore del tipo:
Fault: access violation at 0x401dfa: read of address 0xffffffff
L'errore è sempre lo stesso, cioè voglio dire che gli indirizzi incriminati
sono sempre gli stessi.
Se fosse un problema di RAM (ammesso che lo sia) non dovrei trovare
indirizzi sempre diversi, visto che il programma dovrebbe (non so se è
effettivamente cosi) allocare la memoria per le variabili, gli oggetti e
tutto ciò che usa , scegliendo degli indirizzi iniziali in modo casuale?
Il debugger, contemporaneamente, si ferma sul file list.h, e precisamente in
queste zone:
  /....../
if (this != &x)
    {
        iterator first1 = begin();
        iterator last1 = end();
       ->>>> const_iterator first2 = x.begin(); <<<<<<--- PUNTO INCRIMINATO
        const_iterator last2 = x.end();
        while (first1 != last1 && first2 != last2) *first1++ = *first2++;
        if (first2 == last2)
            erase(first1, last1);
        else
            insert(last1, first2, last2);
  /....../
Non posso seguire mica tutte le centinaia di migliaia di iterazioni che


momento giusto.
E` difficile darti una mano, le notizie che dai non sono
molte... che ci sia un memory leak?
Potrebbe anche essere che effettivamente il tuo programma
necessiti di molta ram, prova a monitorarne l'uso durante
l'esecuzione... potrebbe fornirti qualche indizio.
Paolo
-------------------------------------------
  Paolo Marotta
 
http://web.tiscalinet.it/paolo_marotta/
-------------------------------------------