Stringa e memoria dinamica

di il
4 risposte

Stringa e memoria dinamica

Secondo voi è corretto restituire il puntatore ad una stringa allocata dinamicamente in un metodo?

Questo è un frammento di codice:
Tab::operator char*()const 
{
	char *str;

		str = new char[3];
		str[0] = '='; str[1] = '>'; str[2] = '\0';
	
	return str;
}
questo operatore di casting restituisce semplicemente una stringa stampata poi in output video.
Non dovrebbe esserci un gestione della memoria dinamica e quindi successivamente una distruzione ? Nel codice non c'e'.
Nel caso quale potrebbe essere l'alternativa?

4 Risposte

  • Re: Stringa e memoria dinamica

    La deallocazione la fai quando quella asciiz string non ti serve più.
    Nel caso quale potrebbe essere l'alternativa?
    std::string
  • Re: Stringa e memoria dinamica

    shodan ha scritto:


    std::string
    Questa non l'ho capita.

    Ma è giusta la mia osservazione?
  • Re: Stringa e memoria dinamica

    Non dovrebbe esserci un gestione della memoria dinamica e quindi successivamente una distruzione ? Nel codice non c'e'.
    Se fai la deallocazione all'interno della funzione avresti spazzatura in uscita. Quindi:
    La deallocazione la fai quando quella asciiz string non ti serve più.
    Questa non l'ho capita.
    In C++ le stringhe sono gestite da un'apposita classe.
    http://en.cppreference.com/w/cpp/string/basic_string/basic_string
  • Re: Stringa e memoria dinamica

    zio_mangrovia ha scritto:


    Secondo voi è corretto restituire il puntatore ad una stringa allocata dinamicamente in un metodo?
    Usa le string del C++, segui il consiglio
Devi accedere o registrarti per scrivere nel forum
4 risposte