15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Problem with memory

Sanjay -- SGUPTA@aegonusa.com
Friday, June 14, 1996


MSVC 1.52
Windows 3.11

I have a pretty complex application which allocates large dynamic arrays. 
Also, application uses form views in which all the data input fields are 
also created dynamically. In other words, form view can have edit controls, 
static text controls, bitmaps etc. which are all created dynamically at run 
time with their individual fonts and colors. The applciation also uses 
property sheets -templates for the pages are created through AppStudio, 
however the controls are created in each page at run time just as in form 
view. I am facing two problems:

1. As I stay in my application, available physical RAM always goes on 
decreasing and finally goes to zero but application keeps on working fine - 
I don't see any problems. What bothers me is that as I allocate memory, I 
also free memory but memory never goes up. However I do get all me memory 
back when I exit my app.

2. When I have a property sheet up, the application uses up lot of 
resources. Even though as each page is changed, I clean up all the 
dynamically created memory, but for some reason resources for all the pages 
stay used up which are reclaimes as soon as you close the property sheet.

I am using a third party utility WinPRobe to monitor resources and memory.

I really do need solution to this. I have tested my app with BoundsChecker 
and there are no memory or resource leaks. Any help will be greatly 
appreciated.

Thanks.

Sanjay



funduc@sprynet.com
Saturday, June 22, 1996

If you're using malloc and free, you shouldn't.  That's because they go
dirctly to DOS memory allocation routines and Windows doesn't know when
you freed it.  There is a routine that will help synch Windows memory
managers but you should use GlobalAlloc/LocalAlloc, especially in
Windows 3.1.  If that's not the problem, try describing your
environment (OS, type of allocations etc.).

On Fri, 14 Jun 1996, "Gupta, Sanjay"  wrote:
>
>MSVC 1.52
>Windows 3.11
>
>I have a pretty complex application which allocates large dynamic arrays. 
>Also, application uses form views in which all the data input fields are 
>also created dynamically. In other words, form view can have edit controls, 
>static text controls, bitmaps etc. which are all created dynamically at run 
>time with their individual fonts and colors. The applciation also uses 
>property sheets -templates for the pages are created through AppStudio, 
>however the controls are created in each page at run time just as in form 
>view. I am facing two problems:
>
>1. As I stay in my application, available physical RAM always goes on 
>decreasing and finally goes to zero but application keeps on working fine - 
>I don't see any problems. What bothers me is that as I allocate memory, I 
>also free memory but memory never goes up. However I do get all me memory 
>back when I exit my app.
>
>2. When I have a property sheet up, the application uses up lot of 
>resources. Even though as each page is changed, I clean up all the 
>dynamically created memory, but for some reason resources for all the pages 
>stay used up which are reclaimes as soon as you close the property sheet.
>
>I am using a third party utility WinPRobe to monitor resources and memory.
>
>I really do need solution to this. I have tested my app with BoundsChecker 
>and there are no memory or resource leaks. Any help will be greatly 
>appreciated.
>
>Thanks.
>
>Sanjay
>
Mike Funduc
Funduc Software Inc.
funduc@sprynet.com
102372.2530@compuserve.com
http://home.sprynet.com/sprynet/funduc
http://ourworld.compuserve.com/homepages/funduc




Brad Wilson/Crucial Software -- crucial@pobox.com
Monday, June 24, 1996

[Mini-digest: 2 responses]

> If you're using malloc and free, you shouldn't.  That's because they go
> dirctly to DOS memory allocation routines and Windows doesn't know when
> you freed it.  There is a routine that will help synch Windows memory
> managers but you should use GlobalAlloc/LocalAlloc, especially in
> Windows 3.1.  If that's not the problem, try describing your
> environment (OS, type of allocations etc.).

This doesn't make any sense.  The C runtime library implementation for
malloc and free would be calls to LocalAlloc() and LocalFree(),
respectively.  You cannot just "go directly to DOS memory allocation
routines" and get moveable protected mode memory for a windows
application.

-- 
Brad Wilson        crucial@pobox.com        http://pobox.com/~crucial
Software engineering services for Microsoft Windows NT and Windows 95

"If everything is coming your way, then you're in the wrong lane."

-----From: craigtt@ccmail.PE-Nelson.COM

     
As to the resouce consumption in your property sheet, what you're seeing is 
caused by the fact that all the pages are created when the sheet is created.  
The pages are then simply displayed or hidden as the tabs are walked through.  
You get a window for each control on each page and window handles leave a 
relatively large footprint on resouces in 16 bit Windows.

If you absolutely have to reduce the resouce hit from the property sheet, the 
only way I know of is to dynamically create the controls as a page becomes 
active and destroy them when it becomes inactive.  I imagine this will be a good
bit of work.

Tim Craig
PE-Nelson




Niels Ull Jacobsen -- nuj@kruger.dk
Wednesday, June 26, 1996

At 14:08 14-06-96 -0500, you wrote:
>
>MSVC 1.52
>Windows 3.11
>
>I have a pretty complex application which allocates large dynamic arrays=
.=20
>Also, application uses form views in which all the data input fields are=
=20
>also created dynamically. In other words, form view can have edit contro=
ls,=20
>static text controls, bitmaps etc. which are all created dynamically at =
run=20
>time with their individual fonts and colors. The applciation also uses=20
>property sheets -templates for the pages are created through AppStudio,=20
>however the controls are created in each page at run time just as in for=
m=20
>view. I am facing two problems:
>
>1. As I stay in my application, available physical RAM always goes on=20
>decreasing and finally goes to zero but application keeps on working fin=
e -=20
>I don't see any problems. What bothers me is that as I allocate memory, =
I=20
>also free memory but memory never goes up. However I do get all me memor=
y=20
>back when I exit my app.

MSVC 1.52 and 2.X use suballocators. They allocate memory in large chunks
using LocalAlloc and subdivide it for malloc/freee and new/delete.
Unfortunately, they never release memory to Windows once they have=20
allocated it, unless you call _heapmin().

So just call _heapmin() once in a while (e.g. in your OnIdle()).


>
>2. When I have a property sheet up, the application uses up lot of=20
>resources. Even though as each page is changed, I clean up all the=20
>dynamically created memory, but for some reason resources for all the pa=
ges=20
>stay used up which are reclaimes as soon as you close the property sheet.

Resources are not the same as memory. Do you destroy all the windows=20
you create as soon as you don't need them anymore?  Performance will=20
suffer, but you could probably destroy all the controls on a given page=20
once it loses focus. And don't create them until you're sure you need the=
m.

Finally, if several controls use the same font, make sure to keep only on=
e=20
copy of it. Fonts are rather large and expensive.

>I am using a third party utility WinPRobe to monitor resources and memor=
y.
>
>I really do need solution to this. I have tested my app with BoundsCheck=
er=20
>and there are no memory or resource leaks. Any help will be greatly=20
>appreciated.
>
>Thanks.
>
>Sanjay
Niels Ull Jacobsen, Kr=FCger A/S (nuj@kruger.dk)
Everything stated herein is THE OFFICIAL POLICY of the entire Kruger=20
group and should be taken as legally binding in every respect.=20
Pigs will grow wings and fly.









| Вернуться в корень Архива |