C++ Builder 线程 和 窗体的内存 管理
极速小王子 2008-03-03 11:26:54 我做了一个文件搜索程序,主界面上有一个“搜索”按钮。当点击它时,将开启一个线程,进行目录递归搜索。线程中如果搜索到了特定的文件,则将该文件信息在主界面的TListView空间中显示出来,具体过程是这样的:
1.发现指定文件,调用主界面中偶给你的TListView->Items->AddItem()增加一行数据记录,在线程函数的栈中保存新添加的这个记录行TListItem *item;
2.调用主界面类中封装的函数添加文件的其他信息,这些函数调用item->SubItems->Add(data)添加其他文件信息。data是主界面函数的局部变量
现在的情况是这样的:
运行程序,点击搜索,搜索到的文件依次加入列表中。当再次搜索时,主界面会清空列表中的数据,这时候会发生内存释放错误"Invalid pointer..."。
我将在线程中调用item->SubItems->Add()移到了主界面的类中,还是有这样的问题。高手们,设能解答啊?