Oppure

Loading
29/11/09 21:16
Stefano
Salve a tutti.
Recentemente ho scritto un programma che girava correttamente su XP. Ne sono certo poichè l'ho provato su altri 2-3 pc DIVERSI dal mio.
Spostando il programma su vista però, subito dopo l'avvio della applicazione, il programma mi crashava.

Dopo vari tentativi di debug, mal riusciti, e ricerche su internet, sono riuscito a capire che il problema risiede nell'allocaggio della memoria con il comando malloc.

Ora vi chiedo, è possibile che sia dovuto a malloc? Se è dovuto a questo, esiste un modo per fixare questo errore, anche con un altro comando di allocazione?

Grazie anticipatamente,
Stefano
aaa
29/11/09 21:19
lorenzo
guarda che se stai programmando in C++ e non in C la malloc NON si deve usare MAI.
Si usa invece la
new


e al posto della free la
delete
aaa
29/11/09 21:20
Stefano
Utilizzando new quindi si sostituisce malloc?
Come faccio a definire che quella variabile deve occupare (ad esempio) 1000 byte?
aaa
29/11/09 21:33
GuglielmoS
Postato originariamente da Stefano:

Salve a tutti.
Recentemente ho scritto un programma che girava correttamente su XP. Ne sono certo poichè l'ho provato su altri 2-3 pc DIVERSI dal mio.
Spostando il programma su vista però, subito dopo l'avvio della applicazione, il programma mi crashava.

Dopo vari tentativi di debug, mal riusciti, e ricerche su internet, sono riuscito a capire che il problema risiede nell'allocaggio della memoria con il comando malloc.

Ora vi chiedo, è possibile che sia dovuto a malloc? Se è dovuto a questo, esiste un modo per fixare questo errore, anche con un altro comando di allocazione?

Grazie anticipatamente,
Stefano

Posta il codice perchè se no sarà difficle capire qual'è la causa dell'errore.
aaa
29/11/09 21:39
lorenzo
se cerchi su google informazioni trovi millemila pagine di roba, comunque se metti:

int *v = new int[200];


istanzi un array di 200
Ultima modifica effettuata da lorenzo 29/11/09 21:40
aaa
30/11/09 14:50
HeDo
Postato originariamente da lorenzo:

se cerchi su google informazioni trovi millemila pagine di roba, comunque se metti:

int *v = new int[200];


istanzi un array di 200


200 cosa? patate? byte?

asd, cmq il problema che ha stefano si può risolvere semplicemente installando le redistributable del visual c++ 2008 su vista.

microsoft.com/downloads/…

N.B ovviamente queste redist sono per vc2008, se usi vs2005 devi scaricare le redist del vc2008 :)
aaa
30/11/09 14:53
Stefano
Le redist, sono già installate su vista (del 2005 nel mio caso) Comunque provo l'inizializzazione del tipo char * prova = new char[200];
In questo caso inizializzera 200 char (quindi 200 byte) giusto?
aaa
30/11/09 15:00
HeDo
Postato originariamente da Stefano:

Le redist, sono già installate su vista (del 2005 nel mio caso) Comunque provo l'inizializzazione del tipo char * prova = new char[200];
In questo caso inizializzera 200 char (quindi 200 byte) giusto?


sicuramente vanno aggiornate all'sp1

microsoft.com/Downloads/…

al limite installa sul pc dove crasha il programma vs2005, se sei alla canna del gas...
aaa