Hi there,
my code is allocating memory and never freeing it, even though it should
(at least in my opinion).
The header looks like this:
typedef boost::asio::ssl::streamboost::asio::ip::tcp::socket
sslSocket_t;
class Object {
boost::asio::io_service ioService_;
boost::asio::ip::tcp::acceptor acceptor_;
boost::asio::ssl::context context_;
void functionOne();
void functionTwo(shared_ptr& sslSocket, const
boost::system::error_code& error)
}
And my source like this:
void Object::functionOne() {
for (int i = 0; i < 10; i++) {
shared_ptr sslSocket(new
sslSocket_t(ioService_, context_));
acceptor_.async_accept(sslSocket->lowest_layer(),
boost::bind(&Object::functionTwo, this,
sslSocket, boost::asio::placeholders::error));
}
acceptor_.cancel();
boost::asio::io_service::work work(ioService_);
ioService_.run();
}
void functionTwo(shared_ptr& sslSocket, const
boost::system::error_code& err) {
// Do nothing
}
So when i call *Object.functionOne()*, memory is getting allocated to
the *Object.ioService_* object, in order to be able to call the bound
asynchronous method. Then after the loop, all pending asynchronous
actions on the acceptor are getting canceled. The appropriate handler is
getting invoked as soon as *Object.ioService_.run()* is called (i've
been testing that). BUT for some reason, the allocated memory does not
get freed. I'm stuck on this problem for a while now, any hint or help
would be really appreciated.
Btw.: I'm working on debian and looking at "/proc/self/status" ->
"VmRSS" to whatch the used memory.