[Issue 4358] New: Potential Memory Leaks in std.file.read() ?

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Jun 21 10:13:51 PDT 2010


http://d.puremagic.com/issues/show_bug.cgi?id=4358

           Summary: Potential Memory Leaks in std.file.read() ?
           Product: D
           Version: D1
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: moi at vermi.fr


--- Comment #0 from Vermi <moi at vermi.fr> 2010-06-21 10:13:49 PDT ---
Created an attachment (id=668)
Source file showing problem in memory managment

Hi,
it looks like the Garbage Collector don't free the memory used by
std.file.read().

Here a simple example :

[code]
import std.file;
import std.gc;

void main()
{
    for (int i=0; i<4096; i++)
    {
        void[] buffer = std.file.read("C:\\windows\\System32\\imageres.dll");

        std.gc.fullCollect();
    }
}
[/code]

With this code I get a memory usage of ~200 MB. Now, simply change it with :
[code]
import std.file;
import std.gc;

void main()
{
    for (int i=0; i<4096; i++)
    {
        void[] buffer = std.file.read("C:\\windows\\System32\\imageres.dll");

        std.gc.fullCollect();

        delete buffer;
    }
}
[/code]

The memory usage is now about 20 MB. (the size of the file). It poses me a big
problem with a program I'm writing, mermoy usage is rising until ~600 MB...
Must I add delete everywhere in my code ?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list