[英]How to manage memory returned from function in C
我想制作一個像這樣工作的標記子程序:
這個想法很簡單(我想),但我提出了一個難題。 在創建子串函數時,我意識到它是一個內存泄漏漏洞。 我能想到創建子字符串函數的唯一方法是:
char* sub = ( char* ) malloc ( ( some_length + 1 ) * sizeof( char ) );
for ( i = start_index ; i < some_length ; i++ )
{
sub[ i - start_index ] = source_string[i];
}
sub[ some_length ] = '\0'
return sub;
但問題是,當使用子字符串函數時,我將無法在之后釋放該內存。
// Example usage
TokenStruct* MyToken = CreateToken( substring( input , start , length ) );
有些人可能會建議我在CreateToken函數中釋放內存,但這對我來說似乎是一個非常糟糕的主意,因為它會使CreateToken的代碼非常依賴於子字符串函數。 此外,子字符串函數可能在許多其他函數中使用。
我有一個想法,在終止程序之前保留一個指針表並釋放它們但看起來有點粗略......
你們覺得怎么樣? 處理這類問題的最佳方法是什么?
提前致謝!
這是C和其他相同類型語言中非常常見的問題。 基本上有三種解決方案:
MyToken
),並在釋放對象時釋放該字符串。 由於創建的指針必須在對象( MyToken
)的生命周期中“活動”,所以我建議使用方法二。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.