小编joo*_*oob的帖子

如何安全记忆?

我想实际使用这个包装器,但问题是我不知道它是否非常安全.

我有一个关于使用几个简单的问题malloc(),calloc()realloc().这是我到目前为止所拥有的:

string.h中

typedef struct str str; // pointer for encapsulation
Run Code Online (Sandbox Code Playgroud)

string.c

struct str
{
    char *buf;
    size_t len;
}
Run Code Online (Sandbox Code Playgroud)

说我有一个辅助功能,只是这样做:

    str *NEW_STRING()
    {
        str *temp = calloc(1, sizeof (struct str));
        temp->len = 0;
        temp->buf = (char *) malloc(1);
        return temp;
    }
Run Code Online (Sandbox Code Playgroud)

这样安全吗?如果是,如果我这样做会发生什么:

str *A_STRING = NEW_STRING();
A_STRING = NEW_STRING();
Run Code Online (Sandbox Code Playgroud)

它会调用malloc和calloc两次,那是不是很糟糕?初始化器会更好吗?

void str_init(str *A_STRING)
{
    if (A_STRING)
    {
        free(A_STRING);
    }

    if (A_STRING->buf)
    {
        free(A_STRING->buf);
    }

    A_STRING = calloc(1, sizeof (struct str));
    A_STRING->buf = (char …
Run Code Online (Sandbox Code Playgroud)

c string wrapper

-3
推荐指数
1
解决办法
217
查看次数

标签 统计

c ×1

string ×1

wrapper ×1