dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

atmiņas atbrīvotājs uz cpp
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Kamazs
Guru
Guru


Joined: 17 Jan 2003
Posts: 829
Location: The glorious ancient city of Loja

PostPosted: 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
View user's profile Send e-mail Visit poster's website
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: Thu Oct 18, 2007 5:31 pm    Post subject:

Iesaku ievērtēt http://www.boost.org/, iespējams, kad būs tieši laikā. :wink:

EDIT: Tur ir smart pointeri, kas paši tiek galā ar sevi http://www.boost.org/libs/libraries.htm#Memory.
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: 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
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: 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
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: 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
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: 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
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Tenjou



Joined: 22 Nov 2005
Posts: 275

PostPosted: 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
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: 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
View user's profile Visit poster's website
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group