Gtk GString指针内存泄漏
我试图使用Gtk GString指针内存泄漏,gtk,glib,gstring,Gtk,Glib,Gstring,我试图使用g\u string\u free释放GString*,指针是使用g\u string\u size\u new分配的。但valgrind也给出了同样的内存泄漏 示例代码: Ports * function(bs_t *bs) { GString *string = g_string_sized_new(PATH_MAX); char template[] = "/tmp/grokXXXXXX"; Ports *rc =NULL; if (condit
g\u string\u free
释放GString*
,指针是使用g\u string\u size\u 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;
}
您将对普通
malloc
的调用与包装的g_free
混合使用,
一致使用普通或包装内存分配器。您将对普通
malloc
的调用与包装g_free
混合使用,
始终使用普通或包装内存分配器。您的答案没有错(内存分配器和释放定位器应始终成对使用),但由于GLib 2.45.5,
g_malloc()
相当于malloc()
,g_free()
相当于free()
,这可能不是问题所在。您的答案没有错(内存分配器和释放定位器应该始终成对使用),但由于GLib 2.45.5,g_malloc()
相当于malloc()
,g_free()
相当于free()
,这可能不是问题所在。什么是valgrind错误消息?什么是valgrind错误消息?
rc = (Ports *) malloc (sizeof(Ports));
.
.
.
g_free(rc);