GSTRING指针内存泄漏



我正在尝试使用g_string_free释放GString *,使用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;
}

您正在与包装g_free的普通malloc混合使用,

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

始终使用普通或包装的内存分配器。

最新更新