boost::lexical_cast 에서 std::bad_alloc exception 이 발생합니다.

trymp의 이미지

boost 로 network 프로그램을 짜고 있습니다. single thread 이고요
아래와 같이 async_read_some 에 대한 callback 으로 아래 HandleRead() 함수가 호출되는데

1번 위치에 lexical_cast() 를 쓰면 잘되고요.
2번 위치에 lexical_cast() 를 쓰면 std::bad_alloc exception 이 발생합니다.

에휴 이것때문에 계속 고생이네요.. 상식적으로 어이가 없네요..ㅠㅠ

고수님들의 조언 부탁드립니다.

class TestConn
 ...... 
};
 
void TestConn::HandleRead(const boost::system::error_code& error, size_t bytes_transferred)
{
    if (error || bytes_transferred <= 0)
        return;
 
    //1번위치 
    int num = boost::lexical_cast<int>("22");
 
    string recvMsg;
    copy(m_Buffer.begin(), m_Buffer.begin() +  bytes_transferred, recvMsg.begin());
 
    // 2번 위치
    //    int num = boost::lexical_cast<int>("22");
 
......
}
jick의 이미지

메모리가 깨진 게 아닌가 하는 의심이 드는데요. 한번 valgrind로 돌려보시는 것이...?

* 그리고 잘 이해가 안 가는데 왜 그냥 "int num = 22"라고 쓰지 않는 거죠?