string resize problem

S

Scott

Hello,

I am running into something I have never seen before and can't
explain. Hopefully someone can help.

So I have a method that attempts to fill a string with a value with an
istringstream.

istringtream iss;
string str_val;

iss >> str_val;


This gets called hundreds of times and works, but every now and then I
get a bus error. When I run it in the debugger, it fails here - well
actually in the code that gets invoked by this. Below is the STL
method that gets called based on this. The line that is causing the
bus error is the "s.resize(0)" line. How is this possible? Why
doesn't it always fail? What would cause this line to fail? I can't
recreate the problem with a simple program. What would cause
resize() to throw an exception?

Any ideas.

template <class charT, class traits, class Allocator>
istream &
operator>> (istream &is, basic_string <charT, traits, Allocator> &s)
{
int w = is.width (0);
if (is.ipfx0 ())
{
register streambuf *sb = is.rdbuf ();
s.resize (0); <--------------------This causes bus
exception
while (1)
{
int ch = sb->sbumpc ();
 
R

Ron Natalie

Scott said:
Hello,

I am running into something I have never seen before and can't
explain. Hopefully someone can help.
I'd bet a donut that you are screwing up the memory arena elsewhere, writing off the end
of an array allocation or such. The string just gets the side effect
of that when it goes to allocate some memory.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,020
Latest member
GenesisGai

Latest Threads

Top