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 tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
28. august 2007 - 01:23
#1
void test(int*& t) { t = new int; *t = 10; } int main() { int* t = 0; test(t); cout << t[0] << endl; delete t; }
01. september 2007 - 12:30
#2
Ok tak, lige en ting til. Vil følgende opnå det samme??? void test(int** t) ???
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 - 16:18
#4
dvs x = createX() freeX(x) er en dårlig opbygning???
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???
04. september 2007 - 23:27
#7
Nej, jeg samler ikke på point.
12. september 2007 - 22:21
#8
ok
Kurser inden for grundlæggende programmering