我正在C中滚动自己的split,trim和其他实用程序字符串函数。
在翻找SO的同时,我确定了像strdup()
这样的函数
一般,被认为是邪恶的,因为它分配内存(不像其他字符串函数
来自同一个图书馆。)
但是,我的函数似乎不可避免地以不分配内存的方式编写。我尽力解决这个问题。目前,我已经留下了所有的意见 单独的字符串(const),并返回一个指向新字符串并记录该字符串的指针 返回必须以后免费。
我在思考是否有更好的方法,这个想法让我感到震惊。我试图弄清楚它是否真的是一个好主意,或者它是否是一个天真的想法。这就是我的问题所在 以下解决方案建议?如果没有,怎么回事?
我的想法是这样,我将创建一个这样的结构:
typedef struct string {
char *str;
bool initialized;
} string;
将它用于我的所有字符串操作工作。在所有相关功能的最后,只是
在return语句之前,我将调用另一个函数,让我们在输入字符串上调用它destroy
(它不是char指针,而是前面提到的struct)。该函数反过来会检查布尔值ìnitialized
,表示这个
已分配内存,如果是,则随后将其释放。
答案 0 :(得分:0)
typedef struct string {
char *str;
bool initialized;
} string;
该函数依次检查布尔值
ìnitialized
,表示已分配内存,如果是,则随后将其释放。
您不需要结构来执行此操作。使用空指针初始化您可能想要使用结构的任何char*
指针,并且可以将其传递给free()
或realloc()
,而不必怀疑它是否已经存在进一步分配。