[Qt-interest] memory problem
Farid Derradji
farid.derradji at ITWM.fraunhofer.de
Tue Mar 24 12:19:25 CET 2009
Hello Sujan,
> // In the header file:
>
> QList <QTableWidget *> item;
>
> QList <Geometry *> geoMetry;
>
> int count;
First of all, Member Variable count is completely unnecessary. Hence you
should eliminate it.
> TableWidget::TableWidget()
>
> {
>
> count = 0;
>
> }
Consequence would be: TableWidget::TableWidget() {} <--- !!!!!!!!!
> TableWidget::~TableWidget()
>
> {
>
> If(count != 0)
>
> {
>
> delete item[count];
>
> delete geoMetry[count];
>
> }
>
> }
Here the error occurs !!! QList is zero-based ! This means the indexing
is from 0 to count () - 1!
The proper code would look like this:
TableWidget::~TableWidget()
{
// delete all items -----------------------------------------------
for (int i = 0; i < item.count (); i++)
{
delete item[i];
}
item.clear ();
// delete all geoMetry elements -----------------------------------
for (int i = 0; i < geoMetry.count (); i++)
{
delete geoMetry[i];
}
geoMetry.clear ();
}
> TableWidget::fileNameUpdate(QString filename, Geometry *geometry)
>
> {
>
> Item[count] = new QTableWidgetItem(filename,0);
>
> setItem(count,0,item[count]);
>
> geoMetry[count] = new Geometry;
>
> geoMetry = geometry;
>
> count ++;
>
> }
Here the code changes to:
TableWidget::fileNameUpdate(QString filename, Geometry *geometry)
{
QTableWidgetItem *item = new QTableWidgetItem(filename,0);
Item.append (item);
setItem (Item.size () - 1, 0, Item.last ());
geoMetry.append (geometry);
}
Have a try with this code.
Regards
Farid
More information about the Qt-interest-old
mailing list