View previous topic :: View next topic |
Author |
Message |
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Oct 18, 2007 4:35 pm Post subject: atmiņas atbrīvotājs uz cpp |
|
man šāds viens noderētu...
nu es strādāju ar direct3d, un ar debug runtime ieraudzīju, ka viņš spēj atrast visu, kam ir izdalīta atmiņa! nu man viens tāds arī noderētu, jo dll'am grūti kontrolēt atmiņu, it īpaši, ja tas ir izmantots ar GM!
un man ļoti noderētu, lai tas dll mācētu vispār sevi no atmiņas noņemt, pirms izslēgta galvenā proga, ja man ir tāda nojauta, ka viņš tā nedara.. _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Kamazs Guru
Joined: 17 Jan 2003 Posts: 829 Location: The glorious ancient city of Loja
|
Posted: Thu Oct 18, 2007 5:28 pm Post subject: |
|
Heh, man šķiet, ka automātiskais atmiņas menedžments kā reiz ir viena no tām C#, Java utml. programmēšanas valodu priekšrocībām (tiesa, tas ir arī mīnuss, jo samazina ātrumu), kuras tu negribēji izmantot jo C++ esot vislabākais.
Bet, par tēmu -- nezinu tādu figņu un man ir aizdomas, nav pārāk prātīgi kaut ko tādu meklēt un izmantot. Ja grib automātisko atmiņas menedžmentu, tad vajag attiecīgu valodu ņemti. IMO. _________________ ...un es uzskatu, ka Fallout ir etalons |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Oct 18, 2007 5:56 pm Post subject: |
|
viss jau te būtu ok, bet man noderētu kautkas tāds kā dx'am, kas pats atrod visu, kas ielikts atmiņā un notīra! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Thu Oct 18, 2007 6:00 pm Post subject: |
|
Un variants tāds, ka ieliec visu wrapperi iekšā klasē, bet destructorā ielikt funkciju, kas releiso visu, neder? |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Oct 18, 2007 6:08 pm Post subject: |
|
diemžēl neder, jo strādāju ar dll un gamemakeru _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Thu Oct 18, 2007 6:12 pm Post subject: |
|
Un GM var izsaukt funkciju kādu, kad beidzas main loops?
..jeb..
Code: | int main()
{
InicializēDX();
while(true) {
.. stuffs
}
ReleisoDX(); // <-----
return 0;
} |
|
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Oct 18, 2007 6:21 pm Post subject: |
|
nu tā jau es daru, bet tāpat nezkāpēc paliek 75 MB atmiņā! _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Thu Oct 18, 2007 6:26 pm Post subject: |
|
Tu esi parliecināts, ka tos izveidoja GM? Manuprāt, tad nav kautkas ļoti riktīgi ja tāda apjoma spēlei, noleako tik daudz atmiņas.
Otrkārt ja tu izpildi atbrīvošanu tadā veidā, nekam no DX nevajadzētu palikt(ja protams visu atbrīvoji). |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Oct 18, 2007 6:29 pm Post subject: |
|
varbūt dažus modeļus neatbrīvoju, bet tas neko tomēr nemaina...
vienīgi man ir tādi tākā "storage" katram failu tipam - modeļi, tekstūras, bet tie tur tikai pointerus.. vai tad pointeri varētu norīt tik daudz RAMa? _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Oct 18, 2007 6:33 pm Post subject: |
|
nu tā - paskatos taskmanagerī - spēle ielādēta un var spēlēt - 120 MB RAM, unloadēta - 80 MB RAM...
tāda sajūta, ka GM kautko tur ilgi... _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Thu Oct 18, 2007 6:36 pm Post subject: |
|
Pointeris pats par sevi gandrīz neko neaizņem, jo viņš tikai tur adresi uz atmiņu. Viss atkarīgs, ko Tu dari ar tiem media - ļauj pašai applikācijai izdalīt atmiņu, vai pats ar new/alloc izdali atmiņu manuāli.
Ja Tu izdali manuāli viņu obligāti ir arī pašam manuali jāatbrīvo. So its up to you. Tavu kodu nezinu.
EDIT: Ā, un lielākotiesi vispar OS atbrīvo visu atmiņu pēc programmas izslēgšanas, bet uz to gan nevajadzētu paļauties.
EDIT 2: Vēl Tu vari pamēģināt vienkāršu testu -> izveido jaunu GM projektu ar minimumu, savu wrapperi u.tt. Pēctam ja viss ok, ielādē modeļus, trekstūras u.c. Var diezgan vienkāršā veidā nonākt pie problēmas cēloņa. |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Oct 18, 2007 6:42 pm Post subject: |
|
bet kā OS to atmiņu atbrīvo? varbūt es tā varētu visa DLL'a atmiņu tā notīrīt.. btw, MSDN'ā skatījos, bet nu.. īsti nekļuva skaidrāk, kā šito izdarīt..
EDIT: es directx cpl'ā ieķeksēju "break on memory leaks" un viņš tā arī izdarīja ;D
un es ar vienu testa progu apskatījos - 2 animēti modeļi + tex, + 2 tex + 1 primitīvs 12 tri + 160 tri primitīvs = 54 MB RAM... nu kautkas smags RAM'ā paliek... _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
Tenjou
Joined: 22 Nov 2005 Posts: 275
|
Posted: Thu Oct 18, 2007 6:56 pm Post subject: |
|
Atmiņu atbrīvot Tu vari tikai delloc/delete(varbūt kļudos).
Quote: | EDIT: es directx cpl'ā ieķeksēju "break on memory leaks" un viņš tā arī izdarīja ;D
un es ar vienu testa progu apskatījos - 2 animēti modeļi + tex, + 2 tex + 1 primitīvs 12 tri + 160 tri primitīvs = 54 MB RAM... nu kautkas smags RAM'ā paliek... |
Tas nav normāli, jo kaut iedomājoties Quake1 un 16mb ram...
Vienkāršiem vārdiem sakot, media fails nevar aizņemt vairāk vietas, cik viņš aizņem uz HDD(ja protams Tu nepadari lielāku, kad nolasi failu). |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: Thu Oct 18, 2007 7:17 pm Post subject: |
|
nu jā... es tagad domāju ar D3DSpy pastrādāt, bet izskatās, ka tas diemžēl nav izveidots priekš 32 sdkversijas...
nu lab.. tad man vēl 2 jautājumi:
kādā veidā direct3d debug runtime parāda VC'ā apakšā visus errorus? kā es varu to nologot uz kādu failu bez VC?
kā es varu no DLL'a uztaisīt konsoles logu? _________________ "There are two choices here: "looks good" and "realism"." -- Paul Nettle |
|
Back to top |
|
|
|