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
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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