Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Crash all'accesso di string

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Crash all'accesso di string

Messaggioda Foto Utenteboiler » 28 nov 2014, 13:54

Ciao a tutti

Ho un problema con un programma in C++.
Sono assai arrugginito con i linguaggi di alto livello, quindi si tratterà di qualche errore molto stupido da parte mia, ciononostante non ci arrivo da solo e google non mi ha aiutato.

Sono riuscito a isolare la causa del crash: il seguente spezzone, se compilato non dà né errori né warnings, ma a runtime Windows mi ritorna l'errore "L'applicazione ha smesso di funzionare".

Codice: Seleziona tutto
#include <string>

using namespace std;

int main()
{
    string s;
    s.push_back('b');
    return 0;
}


Molto interessante è che nella console di Code:Blocks non ho crash, succede solo se avvio l'eseguibile direttamente in windows.

Qualcuno mi sa aiutare?
Saluti, Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5612
Iscritto il: 9 nov 2011, 12:27

0
voti

[2] Re: Crash all'accesso di string

Messaggioda Foto UtenteRussell » 28 nov 2014, 14:30

non sembra ci sia un errore

potrei sugggerirti di mettere 'b' prima in un char e poi passarglielo
oppure di usare la funziona 'append'
raro, ma potrebbe essere un bug del compilatore, quindi prova a prendere l'ultima versione
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25

0
voti

[3] Re: Crash all'accesso di string

Messaggioda Foto UtenteWALTERmwp » 28 nov 2014, 19:07

Ciao Foto Utenteboiler, ho eseguito l'istruzione, prima rimanendo all'interno dell'ambiente Code::Blocks e, poi, lanciando il ".exe" generato dallo stesso: in entrambi i casi ha funzionato.
Due riferimenti: Versione IDE == 13.12, Compiler == mingw32-g++.exe .
(Ambiente XP Professional SP3).

Saluti

p.s.
//#include <iostream>
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8989
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[4] Re: Crash all'accesso di string

Messaggioda Foto Utenteboiler » 29 nov 2014, 1:22

Interessante... l'errore probabilmente non è nel codice.
Ho provato adesso sul computer di casa: compila ed esegue senza errori.

L'applicazione mi viene però di 79 KB.
In ufficio, dove avevo il problema, l'applicazione era di soli 19 KB.

Problema di librerie di sistema?

EDIT: stessa configurazione che hai tu, sia a casa che in ufficio, Win7 64 bit.

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5612
Iscritto il: 9 nov 2011, 12:27

0
voti

[5] Re: Crash all'accesso di string

Messaggioda Foto UtenteRussell » 29 nov 2014, 13:38

Forse la differenza di dimensioni sta' nel fatto che hai cambiato le opzioni di compilazione e hai attivato le ottimizzazioni?

comunque si, in effetti è strano...
magari reinstalla codeblocks ... e magari fai anche una scansione antivirus...
Avatar utente
Foto UtenteRussell
3.373 3 5 9
Master
Master
 
Messaggi: 2193
Iscritto il: 4 ott 2009, 10:25

0
voti

[6] Re: Crash all'accesso di string

Messaggioda Foto Utentesimo85 » 30 nov 2014, 12:24

Probabilmente stai scrivendo in una zona di memoria dove non devi.

Hai usato il debugger ? :-)
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[7] Re: Crash all'accesso di string

Messaggioda Foto UtenteDirtyDeeds » 30 nov 2014, 14:17

boiler ha scritto:L'applicazione mi viene però di 79 KB.
In ufficio, dove avevo il problema, l'applicazione era di soli 19 KB.


Questo potrebbe dipendere dal fatto che stai compilando in modalità "debug" e che quindi vengano inserite anche le informazioni sui simboli.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

0
voti

[8] Re: Crash all'accesso di string

Messaggioda Foto Utenteboiler » 30 nov 2014, 20:06

Foto UtenteRussel: il computer su cui non funziona è quello aziendale, sicuramente privo di virus. Posso verificare i flags.

Foto Utentesimo85: ma io lascio l'allocazione della memoria al compiler. Dovrebbe sapere dove scrivere... Il debugger è GDB, non ho mai capito come usarlo.

Foto UtenteDirtyDeeds: negativo, Release in ambo i casi.

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5612
Iscritto il: 9 nov 2011, 12:27

0
voti

[9] Re: Crash all'accesso di string

Messaggioda Foto Utentesimo85 » 30 nov 2014, 20:22

boiler ha scritto:ma io lascio l'allocazione della memoria al compiler.


Non mi riferivo all'allocazione di memoria.
Volevo dire, magari hai qualche overflow da qualche parte.

Anche io lascio che il compilatore allochi la memoria, ma un giorno ho passato mezz'ora a capire perché un buffer si azzerava a metà ... :shock: ...perché in una funzione a parte usavo la strncpy invece di usare semplicemente la strcpy ... per esempio. :-)

boiler ha scritto:Il debugger è GDB, non ho mai capito come usarlo.

gdb non è poi cosi difficile da usare. Con un po' di pratica lo si usa facilmente. Prima di consultare la documentazione ufficiale puoi leggere qui: http://www.cs.cmu.edu/~gilpin/tutorial/
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[10] Re: Crash all'accesso di string

Messaggioda Foto UtenteDirtyDeeds » 30 nov 2014, 23:25

Foto UtenteDirtyDeeds: negativo, Release in ambo i casi.


Puoi riportare la riga di comando completa con cui vengono chiamati compilatore e linker?
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 38 ospiti