我的python代碼正在調用本地庫中的C函數(也由我編寫)。該函數將兩個字符串作爲參數,並以字符串的形式返回其響應。 python傳遞給C庫的兩個參數字符串只能由C庫讀取,所以我不擔心他們的內存管理。 AFAIK,它們的內存將由python分配,並將在python運行時似乎適當時釋放。如何用python ctypes管理字符串內存
但是,我知道C庫返回的字符串的內存必須顯式管理。我可以實現它的一種方式是:C函數callocs一個字符數組,填充答案並從函數返回。 python代碼使用返回的字符串,並應該調用該字符串的libc的空閒或調用同一個C庫的另一個函數,該函數將負責釋放內存。
有沒有其他方法可以做到這一點? ctype是否提供了簡化釋放本地庫返回的數據結構內存的實用函數?
這在理論上可能會導致緩衝區溢出。 – 2011-06-03 16:50:58
@Noctis:這就是爲什麼我說「如果你事先知道返回字符串長度的上限」。 – 2011-06-03 16:57:35