To jiangtao:
>使用Win32的函数isBadReadPtr,可以检查是否合法分配数据>pointer?
>assigned只是判断是否为nil
这种方法不能保证可靠性, 因为您用new, dispose不是直接向操作系统申请/释放内存, 而是通过编译器连接在程序内的堆管理
模块进行的. 堆管理模块不会立即把空闲的内存释放给操作系
统, 也就是说, 对您的程序来说, 这块内存已经释放了, 但是对于
操作系统来说, 这块内存还被您的程序中的堆管理模块占用.
To fuliang:
>我建立了一个对象的数组,是TThread的数组.
>在线程退出时,自动释放了TThread对象,
>我访问这个数祖时,就不知道这个对象是不是释放了.
我建议您建立Thread时, 用suspend方式, 把它挂起来, 然后
在您的数组中给它找一个空闲位置记录下来, 并把这个位置
也记录到Thread的某个成员中去, 这样, 当Thread结束时, 可以
访问您的数组, 把相应位置的值置为空闲状态. 这个方法需
要同步以避免多线程同时对一个数据结构的读写操作.
更好一些的方法时把您的线程的FreeOnTerminate置为False(缺省值)
退出之前给主程序发送消息, 然后由主程序负责Free这个Thread