GString指针内存泄漏

时间:2017-04-17 08:52:48

标签: gtk glib gstring

我正在尝试使用GString *释放g_string_free,指针是使用g_string_sized_new分配的。但是valgrind也为内存泄漏了。

示例代码:

Ports * function(bs_t *bs)
{
    GString *string = g_string_sized_new(PATH_MAX);
    char template[] = "/tmp/grokXXXXXX";
    Ports *rc =NULL;

    if (condition) {
        rc = (Ports *) malloc (sizeof(Ports));
        if (rc == NULL) {
            g_string_free(string, TRUE);
            return NULL;
        }
    }

    if (condition_2) {
        if (!port_file(string->str, &rc->ports[0], &rc->port_valid, 
            NUM_RC_PORTS))
        {
            g_free(rc);
            rc=NULL;
        }
    }
    g_string_free(string, TRUE);
    return rc;
}

1 个答案:

答案 0 :(得分:0)

您正在将包含malloc的普通g_free调用混合,

 rc = (Ports *) malloc (sizeof(Ports));
    .
    .
    .
 g_free(rc);

一致地使用普通或包装的内存分配器。