Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    dubbio su puntatore void* [c++]

    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?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: dubbio su puntatore void* [c++]

    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?
    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    Re: Re: dubbio su puntatore void* [c++]

    Originariamente 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.
    ho fatto
    codice:
    void* miopuntatore;
    miopuntatore=(char*)malloc(sizeof(char)*256);
    ...
    read(0,miopuntatore,256);
    ...
    funziona tutto ma se una stringa nn è lunga 256 caratteri è un problema asd!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: Re: Re: dubbio su puntatore void* [c++]

    Originariamente inviato da Metflar
    ho fatto
    codice:
    void* miopuntatore;
    miopuntatore=(char*)malloc(sizeof(char)*256);
    ...
    read(0,miopuntatore,256);
    ...
    funziona tutto ma se una stringa nn è lunga 256 caratteri è un problema asd!
    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    Re: Re: Re: Re: dubbio su puntatore void* [c++]

    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.
    cm lo aggiungo lo '\0' al puntatore?

  6. #6
    invece di fare questo potrebbe resettare prima l'area di memoria con, ad esempio, memset o simili su zero

  7. #7
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da daniele_dll
    invece di fare questo potrebbe resettare prima l'area di memoria con, ad esempio, memset o simili su zero
    ok cn memset funziona grazie!

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: Re: Re: dubbio su puntatore void* [c++]

    Originariamente inviato da Metflar
    ho fatto
    codice:
    void* miopuntatore;
    miopuntatore=(char*)malloc(sizeof(char)*256);
    Non capisco perche' non scrivi

    codice:
    char* miopuntatore;
    miopuntatore=(char*)malloc(sizeof(char)*256);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    Re: Re: Re: Re: dubbio su puntatore void* [c++]

    Originariamente inviato da oregon
    Non capisco perche' non scrivi

    codice:
    char* miopuntatore;
    miopuntatore=(char*)malloc(sizeof(char)*256);
    pensavo che nn mi avrebbe fatto fare il casting da char* a void* invece ora noto che lo fa

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: Re: Re: Re: Re: dubbio su puntatore void* [c++]

    Originariamente inviato da Metflar
    ... da char* a void* ...
    Veramente e' da void * a char * .... comunque ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.