help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: memory leak in regexprep ? (windows/3.7.2+/VS)


From: Tatsuro MATSUOKA
Subject: Re: memory leak in regexprep ? (windows/3.7.2+/VS)
Date: Wed, 27 Mar 2013 13:51:39 +0900 (JST)

--- On Wed, 2013/3/27, Tatsuro MATSUOKA wrote:
> --- On Tue, 2013/3/26, Christoph Ellenberger  wrote:
> > I am experiencing some strange behavior and wanted to check if it is  a bug 
> > or me....
> > It happens when I try to read in and manipulating some ascii data files. It 
> > only happens with the VS version of octave. (tested with several gcc 
> > versions on windows and didn't showed up).
> > Ok here is some example code to reproduce:
> > First generating an ascii file:
> > s="0123456789";
> > for i=1:21, s=cstrcat(s,s);,endfor
> > save TestData.dat s
> >  
> > Then readin and manipulate:
> > fid = fopen("TestData.dat","r");
> > s = fscanf(fid,'%c');
> > fclose(fid);
> > s = regexprep(s,'0','2');
> >  
> > Clear all and repeat:
> > clear all
> > 
> > fid = fopen("TestData.dat","r");
> > s = fscanf(fid,'%c');
> > fclose(fid);
> > s = regexprep(s,'0','2');
> >  
> > Depending on datasize and how many replacement were performed it either 
> > fails on the new readin or regexprep with a: "error: out of memory or 
> > dimension too large for Octave's index type"
> > Any help is appreciated
> > Christoph
> 
> I have tested on octave-3.6.2 VS, 3.6.2 MinGW, 3.7.2+ VS and 3.6.2 cygwin
> (win 7 64 bit Home premium, 4GB memory)
> 
> 
> 1. octave-3.6.2 VS and 3.6.2 MinGW*****************************
> >> fid = fopen("TestData.dat","r");
> >> s = fscanf(fid,'%c');
> warning: range error for conversion to character value
> >> fclose(fid);
> >> s = regexprep(s,'0','2');
> >> clear all
> >> fid = fopen("TestData.dat","r");
> >> s = fscanf(fid,'%c');
> error: memory exhausted or requested size too large for range of Octave's 
> index type -- trying to return to prompt
> ********************************************************************
> 
> 
> 2. octave-3.7.2+ VS*****************************
> >> fid = fopen("TestData.dat","r");
> >> s = fscanf(fid,'%c');
> warning: range error for conversion to character value
> >> fclose(fid);
> >> s = regexprep(s,'0','2');
> >> clear all
> >> fid = fopen("TestData.dat","r");
> >> s = fscanf(fid,'%c');
> error: out of memory or dimension too large for Octave's index type
> ********************************************************************
> 
> 3.Octave-3.6.2 Cygwin**********************************************
> >> fid = fopen("TestData.dat","r");
> >> s = fscanf(fid,'%c');
> >> fclose(fid);
> >> s = regexprep(s,'0','2');
> >> clear all
> >> fid = fopen("TestData.dat","r");
> >> s = fscanf(fid,'%c');
> >> fclose(fid);
> >> s = regexprep(s,'0','2');
> ********************************************************************
> 
> For me, both VS and MinGW version caused problem. Cygwin version seemed to 
> work correctly.
> 
> Regards
> 
> Tatsuro


I have also tested on 
octave-3.2.4 and 3.4.3 MinGW version.

4. octave-3.2.4 and 3.4.3 MinGW *****************************
>> fid = fopen("TestData.dat","r");
>> s = fscanf(fid,'%c');
warning: range error for conversion to character value
>> fclose(fid);
>> s = regexprep(s,'0','2');
>> clear all
>> fid = fopen("TestData.dat","r");
>> s = fscanf(fid,'%c');
warning: range error for conversion to character value
>> fclose(fid);
>> s = regexprep(s,'0','2');
**************************************************

The problem seemed to be happened on octave-3.6 or later on native windows.

Regards

Tatsuro


reply via email to

[Prev in Thread] Current Thread [Next in Thread]