我在TCL中遇到以下問題。在我的應用程序中,我將很大的文本文件(幾百MB)讀入TCl列表中。該列表然後由函數返回到主要上下文,然後檢查是否爲空。下面是代碼快照:將列表轉換爲字符串 - TCL
set merged_trace_list [merge_trace_files $exclude_trace_file $trace_filenames ]
if {$merged_trace_list == ""} {
...
和我在 「如果」 行得崩潰。崩潰似乎與內存溢出有關。我認爲比較「」強制TCL將列表轉換爲字符串,並且由於字符串太長,導致崩潰。然後,我被另一個上面的「如果」行改爲:
if {[lempty $merged_trace_list]} {
和崩潰真的消失了。鑑於以上所述,我有幾個問題:
- TCL中允許的最大字符串長度是多少?
- 在內存分配方面,TCL中的字符串和列表有什麼區別?爲什麼我可以有很長的名單,但沒有相應的字符串?
- 當函數首次將列表返回到主作用域(第一行)時,是不是先轉換爲字符串?如果是的話,爲什麼我沒有在這一行中崩潰?
謝謝, 我希望描述和問題都很清楚。
康斯坦丁
從好的方面來說,我們剛剛在本週舉行了一次會議,同意在Tcl 9.0上開始認真開發的策略;一旦我們獲得8.6.5的發佈,我們就會忙於此,並計劃在今年12月初。 –
非常感謝!我從TCL學到了一些重要的東西。 – mkostya