Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #5388
| 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> |
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 | Next — Previous in thread | Find similar
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