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 11:03:57 +0900 (JST)

--- 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



reply via email to

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