string resize problem

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Scott

    string resize problem

    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 ();
  • Ron Natalie

    #2
    Re: string resize problem


    "Scott" <scott_siegler@ yahoo.com> wrote in message news:b84d8594.0 307250750.3977a 577@posting.goo gle.com...[color=blue]
    > Hello,
    >
    > I am running into something I have never seen before and can't
    > explain. Hopefully someone can help.
    >[/color]
    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.


    Comment

    Working...