allora nella mia applicazione uso questo void* faccio l'allocazione(sennò mi da segmentation fault) ma poi deve essere continuamente cambiato il valore...cm posso fare?
allora nella mia applicazione uso questo void* faccio l'allocazione(sennò mi da segmentation fault) ma poi deve essere continuamente cambiato il valore...cm posso fare?
Non so cosa hai fatto ma se hai usato funzioni di allocazione della memoria tipo malloc/calloc loro ti forniscono un void* perché ovviamente non "sanno" nulla di come dovrai trattare quell'area di memoria e che cosa dovrà contenere. Spetta a te fare un "cast" di quel puntatore ad un puntatore di un tipo più specifico che ti consentirà di operare sull'area in base a cosa dovrà contenere.Originariamente inviato da Metflar
allora nella mia applicazione uso questo void* faccio l'allocazione(sennò mi da segmentation fault) ma poi deve essere continuamente cambiato il valore...cm posso fare?
ho fattoOriginariamente inviato da andbin
Non so cosa hai fatto ma se hai usato funzioni di allocazione della memoria tipo malloc/calloc loro ti forniscono un void* perché ovviamente non "sanno" nulla di come dovrai trattare quell'area di memoria e che cosa dovrà contenere. Spetta a te fare un "cast" di quel puntatore ad un puntatore di un tipo più specifico che ti consentirà di operare sull'area in base a cosa dovrà contenere.
funziona tutto ma se una stringa nn è lunga 256 caratteri è un problema asd!codice:void* miopuntatore; miopuntatore=(char*)malloc(sizeof(char)*256); ... read(0,miopuntatore,256); ...
A parte il fatto che non è il modo più comodo per leggere righe in input .... comunque quale è il problema esatto??Originariamente inviato da Metflar
ho fatto
funziona tutto ma se una stringa nn è lunga 256 caratteri è un problema asd!codice:void* miopuntatore; miopuntatore=(char*)malloc(sizeof(char)*256); ... read(0,miopuntatore,256); ...
Se ad esempio digiti "ciao" seguito da INVIO, la read() ritornerà restituendo il valore 5 e il buffer sarà riempito con i caratteri 'c' 'i' 'a' 'o' '\n'
A quel punto se vuoi ottenere una stringa gestibile in C/C++ devi semplicemente togliere quel \n e metterci \0.
cm lo aggiungo lo '\0' al puntatore?Originariamente inviato da andbin
A parte il fatto che non è il modo più comodo per leggere righe in input .... comunque quale è il problema esatto??
Se ad esempio digiti "ciao" seguito da INVIO, la read() ritornerà restituendo il valore 5 e il buffer sarà riempito con i caratteri 'c' 'i' 'a' 'o' '\n'
A quel punto se vuoi ottenere una stringa gestibile in C/C++ devi semplicemente togliere quel \n e metterci \0.
invece di fare questo potrebbe resettare prima l'area di memoria con, ad esempio, memset o simili su zero
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb
ok cn memset funziona grazie!Originariamente inviato da daniele_dll
invece di fare questo potrebbe resettare prima l'area di memoria con, ad esempio, memset o simili su zero
Non capisco perche' non scriviOriginariamente inviato da Metflar
ho fatto
codice:void* miopuntatore; miopuntatore=(char*)malloc(sizeof(char)*256);
codice:char* miopuntatore; miopuntatore=(char*)malloc(sizeof(char)*256);
No MP tecnici (non rispondo nemmeno!), usa il forum.
pensavo che nn mi avrebbe fatto fare il casting da char* a void* invece ora noto che lo faOriginariamente inviato da oregon
Non capisco perche' non scrivi
codice:char* miopuntatore; miopuntatore=(char*)malloc(sizeof(char)*256);
Veramente e' da void * a char * .... comunque ...Originariamente inviato da Metflar
... da char* a void* ...
No MP tecnici (non rispondo nemmeno!), usa il forum.