2014-01-08 1 views
2

나는이 기능을 가지고있다. 나는 그것이 어떻게 든 mallocated 메모리를 자유롭게하지 않는다고 생각한다. 어떻게 해결할 수 있을지 모르겠습니다. Valgrind의에서 다음 출력 :메모리 누수 g_strndup

==9556== 2,996 bytes in 428 blocks are definitely lost in loss record 272 of 301 
==9556== at 0x4A21370: malloc (vg_replace_malloc.c:291) 
==9556== by 0x4B5AA95: g_malloc (in /opt/gnome/lib64/libglib-2.0.so.0.800.6) 
==9556== by 0x4B6CB48: g_strndup (in /opt/gnome/lib64/libglib-2.0.so.0.800.6) 
==9556== by 0x402376: getCharVal (c2.c:244) 
==9556== by 0x403381: processXML (c2.c:408) 
==9556== by 0x4039C6: main (c2.c:558) 
+0

. 더 자세한 정보는'getCharVal()'을 호출하는 코드를 보여주십시오. – trojanfoe

답변

3

g_strndup 문자열위한 새로운 메모리 영역을 할당하고 반환합니다. 끝내면 반환 된 포인터에 g_free()을 호출해야합니다. 예를 들어

:`호출 getCharVal()가`제 (반환) 동적으로 할당 된 메모리를 해제하지 않는 무엇이든

gchar *str = getCharVal(...); 
/* use str */ 
g_free(str)