28. august 2007 - 01:15
Der er
7 kommentarer og 1 løsning
Allokering af hukommelse i funktion
Sidder lige og bøvler lidt med allokering af hukommelse. Det jeg vil opnå er at: int* t = NULL void test(int* t) { t = new int() t = 10 } test(t); cout << t; Er dette muligt???
Annonceindlæg fra Deloitte
01. september 2007 - 12:58
#3
Ja, men så skal det være: void test(int** t) { *t = new int; **t = 10; } test(&t); Der er mange der mener at det er grimt at én funktionen allokerer og en anden deallokerer, det bør være den samme.
03. september 2007 - 19:40
#5
Nej, det er ok, her er det den samme der opretter og nedlægger. Problemer er kode som char *p; DoSomething(p); free(p); Det er ikke umiddelbart logisk at kalderen af DoSomething() skal kalde free(p) I dit eksempel har du både en createX og en freeX så det er ok. I nogle tilfælde ville det være smartere med constructor og destructor til objektet.
04. september 2007 - 12:04
#6
ok, jeg havde også en masse create/get og freeX funktioner, men dem har jeg fjernet til fordel for objekter... Det er noget nemmere.... Og du har ret i at funktionerne skal hedde noget logisk for knytte dem sammen. Tak for svarene... Vil du have point???