繁体   English   中英

C:内存分配-以下结构是否是幼稚的解决方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM