N
nithya4u
I am working on a c++ module, where large amount of data needs to be
written to a stream and str() method is been used to assign the value
of this to the char*. This produces the intended result. But when i run
purify on it i get the following results.
[W] MLK: Memory leak of 8656 bytes from 9 blocks allocated in
strstreambuf::doallocate(void) [Builder.exe]
Distribution of leaked blocks
987 bytes from 1 block of 987 bytes (0x03977ea8)
980 bytes from 1 block of 980 bytes (0x038ff010)
976 bytes from 1 block of 976 bytes (0x03974cf8)
969 bytes from 1 block of 969 bytes (0x03969290)
962 bytes from 1 block of 962 bytes (0x03967a00)
960 bytes from 1 block of 960 bytes (0x03965d78)
958 bytes from 1 block of 958 bytes (0x038fe388)
957 bytes from 1 block of 957 bytes (0x003961f8)
907 bytes from 1 block of 907 bytes (0x041080b0)
Allocation location
new(UINT,int,char const*,int) [dbgnew.cpp:46]
strstreambuf::doallocate(void) [_strstre.cpp:201]
strstreambuf:verflow(int) [_strstre.cpp:256]
streambuf::xsputn(char const*,int) [streamb.cpp:182]
streambuf::sputn(char const*,int) [.\.\streamb.h:187]
ostream::writepad(char const*,char const*)
[ostream.cpp:166]
ostream::<<(char const*) [ostream.cpp:61]
writeInvisibleObject(char *,char *,char *,char const*)
[E:\Builder\src\main.cpp:2499]
This happens at the line where the char* is been assigned to the
strstream variable.
strstream strmvar;
strmvar << dataChar;
char* datadetail = strmvar.str();
delete datadetail;
Initially i assumed the reason to be writing a char* to the strstream
variable. But the error occured when i tried with int even. The purify
results indicate that it if beacuse of a overflow to the strstream var.
As for as my understanding the new memory that is been allocated was
never deleted. Since the program involves a huge amount of data this
could occur. Is the overflow the cause for the leak? Is there a way to
get rid of this leak? I definitely need to remove this as we are
running the code in batch mode for a set of input files. and this may
affect the performance of the application when run continously and may
lead to out of memory error even.
Can someone help me?
written to a stream and str() method is been used to assign the value
of this to the char*. This produces the intended result. But when i run
purify on it i get the following results.
[W] MLK: Memory leak of 8656 bytes from 9 blocks allocated in
strstreambuf::doallocate(void) [Builder.exe]
Distribution of leaked blocks
987 bytes from 1 block of 987 bytes (0x03977ea8)
980 bytes from 1 block of 980 bytes (0x038ff010)
976 bytes from 1 block of 976 bytes (0x03974cf8)
969 bytes from 1 block of 969 bytes (0x03969290)
962 bytes from 1 block of 962 bytes (0x03967a00)
960 bytes from 1 block of 960 bytes (0x03965d78)
958 bytes from 1 block of 958 bytes (0x038fe388)
957 bytes from 1 block of 957 bytes (0x003961f8)
907 bytes from 1 block of 907 bytes (0x041080b0)
Allocation location
new(UINT,int,char const*,int) [dbgnew.cpp:46]
strstreambuf::doallocate(void) [_strstre.cpp:201]
strstreambuf:verflow(int) [_strstre.cpp:256]
streambuf::xsputn(char const*,int) [streamb.cpp:182]
streambuf::sputn(char const*,int) [.\.\streamb.h:187]
ostream::writepad(char const*,char const*)
[ostream.cpp:166]
ostream::<<(char const*) [ostream.cpp:61]
writeInvisibleObject(char *,char *,char *,char const*)
[E:\Builder\src\main.cpp:2499]
This happens at the line where the char* is been assigned to the
strstream variable.
strstream strmvar;
strmvar << dataChar;
char* datadetail = strmvar.str();
delete datadetail;
Initially i assumed the reason to be writing a char* to the strstream
variable. But the error occured when i tried with int even. The purify
results indicate that it if beacuse of a overflow to the strstream var.
As for as my understanding the new memory that is been allocated was
never deleted. Since the program involves a huge amount of data this
could occur. Is the overflow the cause for the leak? Is there a way to
get rid of this leak? I definitely need to remove this as we are
running the code in batch mode for a set of input files. and this may
affect the performance of the application when run continously and may
lead to out of memory error even.
Can someone help me?