5

我有一个像

target_results : TDictionary<longint,double>;

填充后,我需要对结果进行排序。我正在这样做

type
  TSearchResult = TPair<longint,double>;

var
 target_results_array : TArray<TSearchResult>;

target_results_array:= target_results.ToArray;
TArray.Sort<TSearchResult>(best_knowledge_search_results,
                    TComparer<TSearchResult>.Construct(
                              function(const L, R: TSearchResult): Integer
                              begin
                                if L.Value < R.Value then Result := 1 else if L.Value > R.Value then Result := -1 else Result := 0;
                              end
                    ));

这一切都按预期工作。我的问题是如何处理 TDictionary 和 TArray 而不会泄漏?目前我只是在做

target_results.Free;
4

1 回答 1

6

由于您的数据是 longints 和 doubles,它们都是值类型,因此释放字典可以正常工作。您的数组将包含原始值的副本,您无需担心丢失或损坏任何内容。

如果你有对象类型,并且你有一个TObjectDictionary拥有对象的对象,那么你就不得不担心这种事情,但对于纯数字数据,你很好。

于 2013-08-04T12:16:36.287 回答