troubleshooting Question

Segmentation Fault with ostream modifier

Avatar of chsalvia
chsalvia asked on
C++
2 Comments1 Solution544 ViewsLast Modified:
I haven't experimented much with C++ style iostream manipulators, so I'm not sure what the problem is here.  I have a data buffer type class which contains a raw byte array.  I want the output to be in hexidecimal format.

So I overloaded the ostream << operator like this:


inline std::ostream& operator << (std::ostream& strm, const data_buffer& db)
{
      byte* p = db.m_data.storage, *end = p + db.m_size;
      while (p < end)
            strm << std::hex << std::uppercase << static_cast<unsigned> (*p++) << " ";
}

This works, except if I use the endl modifier, the program crashes with a segmentation fault, i.e. doing

data_buffer db;
// fill db with some data
cout << db << endl;

...will make the program crash with a segfault.  Without the endl modifier, it works fine.  
Join the community to see this answer!
Join our exclusive community to see this answer & millions of others.
Unlock 1 Answer and 2 Comments.
Join the Community
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 2 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros