我想实际使用这个包装器,但问题是我不知道它是否非常安全.
我有一个关于使用几个简单的问题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)