And the strange thing is, If I use static version of czmq build, everything works fine and no error on free(string).
On Wed, Apr 2, 2014 at 11:55 AM, Pritesh Acharya <[email protected]>wrote: > Hi, > zmq version: zeromq-4.0.3(build as Windows DLL) > czmq version: czmq-2.0.3(build as Windows DLL) > IDE: Visual Studio Professional 2010 > > I have a small progream which creates two thread and uses ZMQ_PAIR socket > over inproc to send data from one to another. > One thread sends data using zstr_send and other receives using zstr_recv. > If I don't free string received from zstr_recv , I get constant increase > of memory (via Task Manager). > If I free it using free(), i get heap corruption error on the frist free. > > Here is the code > > > *#include <iostream>* > *#include "czmq.h"* > *#include <boost/thread.hpp>* > > *zctx_t *zmq_ctx=NULL;* > > *void normalizer() * > *{* > * void *xmitter;* > * xmitter = zsocket_new(zmq_ctx, ZMQ_PAIR);* > * zsocket_connect (xmitter, "inproc://sender");* > * while(1)* > * {* > * zstr_send (xmitter, "hello");* > * }* > * zsocket_destroy (zmq_ctx, xmitter);* > *}* > > *void sender() * > *{* > * void *receiver = zsocket_new(zmq_ctx, ZMQ_PAIR);* > * int rc = zsocket_bind (receiver, "inproc://sender");* > * boost::thread t(&normalizer);* > * int counter=0;* > * while(1)* > * {* > * char *string = zstr_recv (receiver);* > * counter++;* > * if(counter%10000==0)* > * {* > * std::cout << "counter: " << counter << std::endl;* > * }* > * //free (string); //problem is here* > * }* > * zsocket_destroy(zmq_ctx, receiver);* > *}* > > *void main(void)* > *{* > * zmq_ctx = zctx_new();* > * boost::thread t(&sender);* > * t.join();* > *}* > >
_______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
