[英]C: Memory allocation - Is the following struct a naive workaround?
我目前正在用C滾動自己的split,trim和其他實用程序字符串函數。在四處搜尋時,我確定像strdup()
這樣的函數通常被認為是邪惡的,因為它會分配內存(與其他字符串函數不同)。相同的庫)。
但是,似乎無法避免以不分配內存的方式編寫我的函數。 我正在盡力解決這個問題。 當前,我將所有輸入字符串(const)留空了,並返回了一個指向新字符串的指針,並記錄了返回必須稍后釋放的情況。
我正在考慮是否有更好的方法,這個主意打動了我。 我試圖弄清楚這實際上是一個好主意還是天真。 我的問題就在這里,以下解決方案是否明智? 如果沒有,怎么來?
我的想法是這樣,我將創建一個這樣的結構:
typedef struct string {
char *str;
bool initialized;
} string;
用它來完成我所有的字符串操作工作。 在所有相關函數的結尾,在return語句之前,我將調用另一個函數,在輸入字符串上將其稱為destroy
(不是char指針,而是上述結構)。 該函數依次檢查布爾值“ ìnitialized
,它表示已分配內存,如果已分配,則隨后釋放它。
typedef struct string {
char *str;
bool initialized;
} string;
該函數依次檢查布爾值“
ìnitialized
,它表示已分配內存,如果已分配,則隨后釋放它。
您不需要執行此操作的結構。 使用空指針初始化您可能想要使用其結構的任何char*
指針,然后可以將其傳遞給free()
或realloc()
而不必懷疑它是否已被進一步分配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.