|
|
Up |
|
|
  |
Author: sliveroslivero Date: Jun 12, 2008 19:02
Ciao ragazzi,
premettendo di essere abbastanza nuovo per quanto riguarda la
programmazione,il mio problema è il seguente:
sviluppato un semplice software (x win) sul portatile, girava che era
un amore ma a malincuore ho notato che sul mio desktop, cosi' come
anche su altri, in apertura di un mio file,da quel spiacevole errore
<< l'istruzione ha fatto riferimento all'indirizzo #... la memoria non
poteva essere "read" >> (stessa versione di win).
Non so piu' dove sbattere la testa, su internet ho trovato qualcosa
riguardo problemi di overflow di buffer, ho controllato e
ricontrollato il codice ma sembra proprio che non ci siano problemi
( infatti sul laptop va! ).
Grazie a tutti anticipatamente.
Francesco.
|
| |
|
| | 14 Comments |
|
  |
Author: sliveroslivero Date: Jun 12, 2008 19:09
p.s.: scusate gli errori sintattici e ortografici, ma l'ora e' tarda e
non ho riletto :P
|
| |
|
| | no comments |
|
  |
Author: MaurusMaurus Date: Jun 13, 2008 02:29
slivero@libero.it ha scritto:
> Ciao ragazzi,
> premettendo di essere abbastanza nuovo per quanto riguarda la
> programmazione,il mio problema è il seguente:
> sviluppato un semplice software (x win) sul portatile, girava che era
> un amore ma a malincuore ho notato che sul mio desktop, cosi' come
> anche su altri, in apertura di un mio file,da quel spiacevole errore
> << l'istruzione ha fatto riferimento all'indirizzo #... la memoria non
> poteva essere "read" >> (stessa versione di win).
>
> Non so piu' dove sbattere la testa, su internet ho trovato qualcosa
> riguardo problemi di overflow di buffer, ho controllato e
> ricontrollato il codice ma sembra proprio che non ci siano problemi
> ( infatti sul laptop va! ).
>
> Grazie a tutti anticipatamente.
>
> Francesco.
|
| Show full article (1.42Kb) |
| no comments |
|
  |
Author: Andrea LaforgiaAndrea Laforgia Date: Jun 13, 2008 11:08
On Thu, 12 Jun 2008 19:02:07 -0700 (PDT), slivero@libero.it wrote:
>Non so piu' dove sbattere la testa
Generalmente questi problemi sono dovuti all'uso di puntatori non
inizializzati. Fammi vedere un po' di codice e ti saprò dire meglio.
|
| |
| no comments |
|
  |
Author: sliveroslivero Date: Jun 13, 2008 18:28
bool Lista::Load(){ //Legge tutti gli oggetti salvati in backup.dat
Persona * p = new Persona;
ifstream file;
int size = sizeof(Persona);
//if(file.open(backup,ios::noreplace|ios::binary|ios::in));
file.open(backup,ios::binary|ios::in);
if(file){
file.seekg(0,ios::beg);
while(file.read(reinterpret_cast(p),size)){
Load(p);
}
file.close();
delete p;
return true;
}
else return false;
}
|
| Show full article (0.86Kb) |
| no comments |
|
  |
Author: TommyTommy Date: Jun 15, 2008 07:50
wrote in message
> bool Lista::Load(){ //Legge tutti gli oggetti salvati in backup.dat
> Persona * p = new Persona;
> ifstream file;
> int size = sizeof(Persona);
>
> //if(file.open(backup,ios::noreplace|ios::binary|ios::in));
> file.open(backup,ios::binary|ios::in);
> if(file){
> file.seekg(0,ios::beg);
> while(file.read(reinterpret_cast(p),size)){
> Load(p);
> }
> file.close();
> delete p;
> return true;
> }
> else return false;
> }
Io fossi in te riscriverei questa parte del programma. Stai facendo cose che
non dovresti fare e non solo questo, ma il programma ti dara' sempre
problemi, specilmente se provi di generare il file su...
|
| Show full article (1.81Kb) |
| no comments |
|
  |
Author: TommyTommy Date: Jun 15, 2008 08:06
"Tommy" wrote
> Tommaso
Ci sono anche altri problemi con il tuo codice, anche restando sullo stesso
sistema, con stesso compilatore e settings, etc...
Supponi che Persona abbia:
- 1 array di caratteri di dimensioni fisse
- 1 intero
il codice tuo ha piu' o meno senso, ma supponi che Persona ora sia:
- un puntatore ad una stringa da qualche altra parte in memoria
- 1 intero
Beh, ora il problema e' che sul file salvi l'indirizzo a cui punta il
puntatore, non la stringa. Quando leggi dal file tale stringa potrebbe non
esistere in memoria o se anche esiste potrebbe essere in un altro indirizzo.
Questo problema non lo hai solo se usi puntatori direttamente, ma ad esempio
anche se usi vector (std::vector invece di un array di caratteri ad
esempio).... nonostante puoi mettere il vector all'interno della classe, il
vector gestira' poi un array che verra' allocato nella heap e questo non
verra' salvato.
|
| Show full article (1.09Kb) |
| no comments |
|
  |
Author: sliveroslivero Date: Jun 16, 2008 16:50
Sono uno studente al primo anno di ingegneria informatica. Come mai
non e' garantita la rappresentazione binaria in c++?
Questa è l'unica strada che ho trovato per scrivere/leggere su memoria
di massa, non ho esperienza di xml.
Poi perche' troppo basso livello? Su tutti i libri che ho letto, il
casting va fatto proprio in quel modo (nel mio caso); cosa sarebbero i
puntatori "raw"?
Cmq e' ovvio che leggendo da file non tengo conto dei puntatori..ogni
volta carico una lista linkata in memoria, da file mi
serve solo leggere stringhe fondamentalmente, membri di una mia
classe.
Scusa l'ignoranza :P
|
| |
| no comments |
|
  |
Author: sliveroslivero Date: Jun 16, 2008 16:53
p.s.: questo e' l'errore causato da un altra applicazione mfc (che sto
sviluppando con visualc++) http://img517.imageshack.us/my.php?
image=errordamagedx8.jpg quando uso quel metodo.. (clicco ignora e il
resto va alla perfezione).
|
| |
| no comments |
|
  |
|
|
  |
Author: [L]ash[L]ash Date: Jun 17, 2008 11:23
Il giorno Mon, 16 Jun 2008 16:50:09 -0700 (PDT)
slivero@libero.it ha scritto:
> Sono uno studente al primo anno di ingegneria informatica. Come mai
> non e' garantita la rappresentazione binaria in c++?
perchè lo standard definisce una rappresentazione binaria.
> Poi perche' troppo basso livello?
perchè stai "giocando" direttamente con dei byte
> casting va fatto proprio in quel modo (nel mio caso); cosa sarebbero i
> puntatori "raw"?
il casting in quanto tale può anche essere giusto, è la parte di codice
che lo usa che è completamente sbagliata. Devi pensare ad un livello
più alto.
Quindi se:
struct Persona
{
string nome;
string cognome;
}
|
| Show full article (1.08Kb) |
| no comments |
|
|
|
|