And user->name = new_stringw(L"User"); will do so as well Martijn
On Tue, Sep 13, 2011 at 1:52 PM, Martijn Dashorst <[email protected]> wrote: > user = new_helloworld_user() > > will allocate memory for each pass through the loop. > > Martijn > > On Mon, Sep 12, 2011 at 11:19 PM, Thomas Marsh <[email protected]> > wrote: >> Hello all, >> >> I have a question about memory consumption in the Etch/C runtime based on >> behavior we are seeing within our C client. I have modified the C >> implementation of the HelloWorld example in the distribution to run an >> infinite loop of requests: >> >> In the main() routine of helloworld_client_main.c: >> >> ... >> while (1) { >> user = new_helloworld_user(); >> user->id = 5; >> user->name = new_stringw(L"User"); >> result = remote->say_hello(remote, user); >> if (is_etch_exception(result)) { >> ... >> } >> printf("%S\n", result->v.valw); >> etch_object_destroy(result); >> } >> ... >> >> While running this, I see that the memory consumption of the client >> continually grows. (In this example, it grows by about 1 mB every 5 >> seconds.) I cannot see the memory leak when testing with valgrind, so it >> would suggest that the leak is in Etch managed memory which is cleared at >> exit. >> >> My understanding is that the call to remote->say_hello() should delegate >> responsibility of deallocation of the parameters to the Etch runtime, and >> that the client code is only responsible for deallocating the result object. >> The memory use should be stable within this tight loop. Can anyone comment >> on the potential cause of the memory consumption? >> >> Thanks, and best regards, >> >> --thomas >> > > > > -- > Become a Wicket expert, learn from the best: http://wicketinaction.com > -- Become a Wicket expert, learn from the best: http://wicketinaction.com
