Avatar billede gumbert Nybegynder
25. maj 2003 - 10:38 Der er 8 kommentarer og
1 løsning

Er denne funktion optimal

Hey eksperter.

I forbindelse med et lille projekt jeg arbejder på vil jeg lige høre om detteher er optimalt. Jeg har lavet en funktion der modtager en streng og udskriver den, men jeg er lidt i tvivl om det er rigtigt at bruge den sidste linie

void skrivetid(char streng[])
{
    cout<<flush;
    Sleep(tid(antal_tegn(udskrift)));
    cout << udskrift<<endl<< flush;
    delete streng; //Det er her jeg er i tvivl
}

Funktionskaldet: skrivetid("Hej med dig");

Grunden til at jeg bruger delete er for at "rydde" op men må jeg godt bruge delete på denne måde eller er der en bedre måde
Avatar billede gumbert Nybegynder
25. maj 2003 - 10:42 #1
Lige en ting funktionen skal bruges mange gange i programmet :)
Avatar billede arne_v Ekspert
25. maj 2003 - 10:49 #2
Skrivning til skærm er normalt så langsomt at det slet ikke skal
bruges når noget skl kaldes mange gange.

Mange gange er oppe i millioner/milliareder.

Du kan kun delete noget der er new'et.

"Hej med dig" er ikke new'et og kan derfor ikke delete's.

(som hovedregel vil jeg anbefale dig at delete'e samme
C fil som du new'er)
Avatar billede gumbert Nybegynder
25. maj 2003 - 10:51 #3
Det vil sige at funktionen selv rydder op efter sig når den har udskrevet "Hej med dig" så jeg behøves ikke bekymre mig om resurser?
Avatar billede arne_v Ekspert
25. maj 2003 - 10:54 #4
Ikke i det eksempel, hvor du kalder med en konstant.

Heller ikke hvis du kalder med en normal variabel.

Kun hvis du begyndet at new'e.

(og som sagt synes jeg at det i så fald var kalderen der skulle
delete)
Avatar billede gumbert Nybegynder
25. maj 2003 - 10:58 #5
ok tak for hjælpen arne_v Gider du ikke lige lægge et svar så du kan få de point ?? :)
Avatar billede gumbert Nybegynder
25. maj 2003 - 10:59 #6
lige en ting du kan lægge i svaret. Hvad nu hvis jeg har brugt new i main() og kalder med det?
Avatar billede arne_v Ekspert
25. maj 2003 - 11:00 #7
svar
Avatar billede arne_v Ekspert
25. maj 2003 - 11:02 #8
Hvis du har brugt:

char *p = new char[20];
strcpy(p,"Hej med dig");

så kan du godt kalde delete i din skrivtid.

*MEN* det er meget pænere med:

char *p = new char[20];
strcpy(p,"Hej med dig");
skrivtid(p);
delete[] p;

fordi main ved om den slev har new'et eller ej.
Avatar billede gumbert Nybegynder
25. maj 2003 - 11:07 #9
Ok tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester