Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C++] Teoria sulle funzioni

    Ciao a tutti,

    una breve domanda sulle funzioni

    int pippo()
    {
    int a=4,b=5;

    return a + b

    }
    In questo caso dopo l esecuzione di pippo a e b vengono distrutti.

    char * pippo(char * p)
    {
    char *c;

    c= new char[strlen(p)]
    strcpy(c,p);
    return c;

    }

    Nel secondo caso quando chiamo pippo la memoria allocata da c= new char[strlen(p)] non viene distrutta giusto?

    Scusate se la domanda vi sembra banale, ma sto studiando il C++ venendo dal C e sto trovando certi concetti veramente rognosi.

    Grazie a tutti per le rispo!!!

  2. #2
    La memoria allocata con new deve essere esplicitamente deallocata tramite delete o, nel caso di un vettore, con delete []
    “Guardo in alto mentre cammino, così le lacrime non scenderanno...”
    Kyu Sakamoto

  3. #3
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Non credo venga distrutta...

    Mi pare in c++ si faccia
    codice:
    delete(c);
    dove c mi pare sia il tuo puntatore...

  4. #4
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    ehheh sono stato battuto sul tempo dal dr...

  5. #5
    Originariamente inviato da Il Pazzo
    ehheh sono stato battuto sul tempo dal dr...


    Scusate se la domanda vi sembra banale, ma sto studiando il C++ venendo dal C e sto trovando certi concetti veramente rognosi.
    Per chiarire/approfondire i concetti del C++ ti consiglio di leggere le C++ FAQ Lite
    “Guardo in alto mentre cammino, così le lacrime non scenderanno...”
    Kyu Sakamoto

  6. #6
    Originariamente inviato da Dr. Fiemost



    Per chiarire/approfondire i concetti del C++ ti consiglio di leggere le C++ FAQ Lite
    Thanks!! Bel link!

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

    Re: [C++] Teoria sulle funzioni

    Originariamente inviato da UltraBeginner
    int pippo()
    {
    int a=4,b=5;

    return a + b

    }
    In questo caso dopo l esecuzione di pippo a e b vengono distrutti.
    Certo ... sono variabili "automatiche".

    Originariamente inviato da UltraBeginner
    char * pippo(char * p)
    {
    char *c;

    c= new char[strlen(p)]
    strcpy(c,p);
    return c;

    }

    Nel secondo caso quando chiamo pippo la memoria allocata da c= new char[strlen(p)] non viene distrutta giusto?
    La variabile 'c' pure lei è "automatica", quindi viene "distrutta" al termine della funzione.
    Quello che non viene distrutto è ovviamente il blocco di memoria allocato (che non c'entra nulla con la funzione e le variabili) e di cui fai ritornare il puntatore.
    Tra l'altro dovresti allocare 1 carattere in più (strlen(p)+1) perché non hai allocato spazio per il carattere nullo.

    Originariamente inviato da UltraBeginner
    Scusate se la domanda vi sembra banale, ma sto studiando il C++ venendo dal C e sto trovando certi concetti veramente rognosi.
    Questo c'entra relativamente poco con C++ (solo perché hai usato new invece di una malloc). Questo concetto vale in generale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

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.