Hi Pritpal
This behavior is usual for any C++ program.
Here is example:
#include <iostream>
using namespace std;
class TRect
{
public:
TRect(int t,int l,int w,int h)
:_t(t),_l(l),_w(w),_h(h)
{}
int top() const { return _t; }
int left() const { return _l; }
int width() const { return _w; }
int height() const { return _h; }
private:
int _t,_l,_w,_h;
};
int main()
{
TRect *r1= new TRect(20,20,30,400);
cout << "before delete " << endl;
cout << r1->top() << endl;
cout << r1->left() << endl;
cout << r1->width() << endl;
cout << r1->height() << endl;
delete r1;
cout << "after delete " << endl;
//r1=0;
cout << r1->top() << endl;
cout << r1->left() << endl;
cout << r1->width() << endl;
cout << r1->height() << endl;
return 0;
}
/******** output
"before delete "
20
20
30
400
"after delete "
0
20
30
400
************/
Because of that it's recomender to set pointers to 0 (r1=0)
Brgs
Franček
Pritpal Bedi wrote:
>
> Hello Viktor
>
>
> Viktor Szakáts wrote:
>>
>> This means QT cannot be used in apps which is supposed
>> to run continuously. (?)
>>
>> Continuously running GUI apps aren't that typical, but
>> to me it's still a serious concern that and app just
>> eats memory while running. This makes it f.e. unsuitable
>> for any sort of embedded GUI applications (like a kiosk).
>>
>> Is this a property of QT itself, or the property of
>> Harbour wrappers?
>>
>
> It is a property of Qt itself.
> I have made extensive experiments as far as Harbour's
> parameter passing is concerned and have reached to the
> conclusion that it is harmless. Experiments with Qt's
> object destruction has given me weired results.
> For example:
>
> oRect := QRect():new( 20,20,30,400 )
> ? oRect:left() => 20
> ? oRect:top() => 20
> ? oRect:right() => 30
> ? oRect:bottom() => 400
>
> Qt_QRect_destroy( oRect )
> ? oRect:left() => 4534342 ( a long figure )
> ? oRect:top() => 8967354 ( another long figure )
> ? oRect:right() => 30
> ? oRect:bottom() => 400
>
> .cpp
>
> HB_FUNC( QT_QRECT_DESTROY )
> {
> delete hbqt_par_QRect( 1 );
> // OR/AND
> hbqt_par_QRect( 1 )->~QRect();
> }
>
> So even after destroy, oRect is an active pointer and
> only firts two slots are pointing to garbase. In theory
> after destroying it it should raise som error or appln
> must hang, but results are contrary.
>
> Though I have not given up, YET, on this issue,
> but at the face value ( till now ) it appears we cannot
> use Harbour-Qt for production level applications.
>
> NOTE: struggle is still on to overcome it.
>
> Regards
> Pritpal Bedi
>
>
--
View this message in context:
http://www.nabble.com/demoqt-tests-with-debug_new---Leaked-objects-tp25434990p25480346.html
Sent from the Harbour - Dev mailing list archive at Nabble.com.
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour