我正在使用一个TDataSet,它需要定位到当前记录。然而,每次我执行TDataSet.Next()时,下一个记录都会被加载到内存中,并且永远不会被释放。但是再次转到该记录将重新加载它,从而导致应用程序中相当大的内存泄漏。我如何防止这种行为?谢谢!
TDataSet.Next()
r1zk6ea11#
你怎么知道“记忆永远不会被释放”?TDataset使用内部缓冲区来存储“当前”记录的值。滚动数据集时,将重用此缓冲区。关闭数据集时将释放此缓冲区。不存在为每个加载的记录分配内存这类操作。TDataset的其他实现可能使用不同的缓冲模式,这可能导致内存泄漏,但标准TDatatset不会。
1条答案
按热度按时间r1zk6ea11#
你怎么知道“记忆永远不会被释放”?
TDataset使用内部缓冲区来存储“当前”记录的值。滚动数据集时,将重用此缓冲区。关闭数据集时将释放此缓冲区。不存在为每个加载的记录分配内存这类操作。
TDataset的其他实现可能使用不同的缓冲模式,这可能导致内存泄漏,但标准TDatatset不会。