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?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
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.