Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #5388

Re: Interpeting valgrind

From Ruben Safir <ruben@mrbrklyn.com>
Newsgroups comp.lang.c++
Subject Re: Interpeting valgrind
Date 2011-05-24 02:48 +0000
Organization PANIX Public Access Internet and UNIX, NYC
Message-ID <irf6a6$at1$2@reader1.panix.com> (permalink)
References (1 earlier) <cone.1306107376.32708.16159.500@monster.email-scan.com> <70a85274-88f9-4a18-b45c-50f05e91773c@l26g2000yqm.googlegroups.com> <cone.1306113809.229005.17178.500@monster.email-scan.com> <irek9g$dno$4@reader1.panix.com> <ireoit$iph$1@hoshi.visyn.net>

Show all headers | View raw


On Tue, 24 May 2011 00:54:17 +0200, Kai-Uwe Bux wrote:

> Ruben Safir wrote:
> 
> [...]
>> But look at this
>> ==26349== 121,600 (1,600 direct, 120,000 indirect) bytes in 100 blocks
>> are definitely lost in loss record 17 of 17 ==26349==    at 0x4027400:
>> operator new(unsigned int) (in
>> /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==26349==    by
>> 0x8048E49: creating_int_list() (test_del2.cpp:105) ==26349==    by
>> 0x8048A89: main (test_del2.cpp:55) ==26349==
>> 
>> 
>> 
>> Ok those lines are as follows - the call function designed to allocate
>> a list of integers and return them (in this case to main
>>       std::cout << "CREATING LIST for ARRAY
>>       -------------------------------\n"; a[i] = creating_int_list();
>> 
>> 
>> chainlist::List<int> * creating_int_list(){
>>    // chainlist::List<int>  set = new chainlist::List<int>;
>>    chainlist::List<int> * set = new chainlist::List<int>; int ran;
>>    for(int i = 0; i < 100; ++i){
>>       ran=rand();
>>       set->insert(ran % 100);
>>    }
>>    set->display();
>>    return set;
>> }
>> 
>> 
>> If I chose to delete the returned List pointed to by set, it have to be
>> done OUT of that function otherwise the function has no point
>> 
>> So upon complaint i did just that
>> 
>> 
>>    for( i=0; i < 100; ++i){
>>       delete a[i];
>>    }
>>    return EXIT_SUCCESS;
>> 
>> 
>> That had NO IMPACT on the report.
> [...]
> 
> Then, it looks as though the destructor of chainlist::List<int> is not
> releasing the resources properly. I looked upthread for that destructor.
> It relies upon a method remove_front() which you posted as:
> 
>    template<class T>
>       void List<T>::remove_front(){
> ////     std::cout << "Removing the Front " << front() << " End of List
> is "<< endd() << std::endl;
> 
>          if(front() == 0){
> //          std::cout << "Front  is NULL " << front() << std::endl;
>             return;
>          }
>          if(front() == endd()){
> //
> //          std::cout << "Front  is End " << front() << std::endl;
>             Node<T> * tmp = front();
>             delete tmp;
>             front(0);
>             endd(0);
>             cursor() = 0;
>             sizedown();
>             return;
>          }
> 
> The code looks incomplete, so I cannot comment on the correctness. But
> that is, where I would search.
> 
> 
> Best,
> 
> Kai-Uwe Bux

here is the complete destructor

  template<class T>
      List<T>::~List<T>(){
	 remove_all();
//	 std::cout << "Deleted All*************"  << __LINE__ << 
std::endl;
      }


   template< class T>
      void List<T>::remove_all(){

//	 std::cout << "remove_all " << __LINE__ << std::endl;
	 cursor() = front();
	 while(cursor() != endd()){
//	    std::cout << "remove_all the front line" << __LINE__ << 
std::endl;
	    remove_front();
	 }
//	 std::cout << "\n\nReached the End\n\n";
	 remove_front();
//	 std::cout << "\n\nDeleted Last Node\n\n";
      }


   template< class T>
      void List<T>::remove_all(){

//	 std::cout << "remove_all " << __LINE__ << std::endl;
	 cursor() = front();
	 while(cursor() != endd()){
//	    std::cout << "remove_all the front line" << __LINE__ << 
std::endl;
	    remove_front();
	 }
//	 std::cout << "\n\nReached the End\n\n";
	 remove_front();
//	 std::cout << "\n\nDeleted Last Node\n\n";
      }



   template<class unk>
      Node<unk>::~Node(){
	 if(value_)
	    delete value_;
//	 std::cout << "Delete Node" << __LINE__ <<  std::endl;

      }

Back to comp.lang.c++ | Previous | NextPrevious in thread | Find similar


Thread

Interpeting valgrind Ruben Safir <ruben@mrbrklyn.com> - 2011-05-22 23:03 +0000
  Re: Interpeting valgrind Sam <sam@email-scan.com> - 2011-05-22 18:36 -0500
    Re: Interpeting valgrind mrbrklyn <ceo.brooklyn@gmail.com> - 2011-05-22 17:23 -0700
      Re: Interpeting valgrind Sam <sam@email-scan.com> - 2011-05-22 20:23 -0500
        Re: Interpeting valgrind Ruben Safir <ruben@mrbrklyn.com> - 2011-05-23 21:41 +0000
          Re: Interpeting valgrind Kai-Uwe Bux <jkherciueh@gmx.net> - 2011-05-24 00:54 +0200
            Re: Interpeting valgrind Ruben Safir <ruben@mrbrklyn.com> - 2011-05-24 02:37 +0000
              Re: Interpeting valgrind Michael Doubez <michael.doubez@free.fr> - 2011-05-24 01:36 -0700
                Re: Interpeting valgrind Ruben Safir <mrbrklyn@panix.com> - 2011-05-27 18:08 +0000
                Re: Interpeting valgrind Jorgen Grahn <grahn+nntp@snipabacken.se> - 2011-05-27 22:43 +0000
                Re: Interpeting valgrind Ruben Safir <ruben@mrbrklyn.com> - 2011-05-27 23:01 +0000
                Re: Interpeting valgrind Michael Doubez <michael.doubez@free.fr> - 2011-05-29 12:41 -0700
            Re: Interpeting valgrind Ruben Safir <ruben@mrbrklyn.com> - 2011-05-24 02:48 +0000

csiph-web