2017-03-27 4 views
0

Glib에서 저장 장치/메모리를 어떻게 회수합니까? g_object_unref()를 호출했고 ref-counts가 0이지만 저장소가 다시 확보되었는지 확신 할 수 없습니다.Glib의 메모리 관리

루틴을 호출해야합니까? 그렇다면 어떤 루틴인가? 그렇지 않다면, 무엇?

+0

[Glib/GDBus 코드에서 메모리 누수가 발생합니까?] (http://stackoverflow.com/questions/42987043/getting-memory-leaks-in-glib-gdbus-code) – TingPing

답변

0

GLib의 많은 메모리 할당은 GLib 사용 코드 에서처럼 많은 양의 동일한 크기의 메모리 블록을 할당 할 때 성능이 좋은 슬라이스 할당자를 사용하여 수행됩니다.

전통적인 malloc을 사용할 때와 같은 방법으로 슬라이스 할당자를 사용하여 메모리 사용량이 위아래로 이동하는 것을 볼 수 없습니다. 슬라이스 할당자는 종종 다른 블록에 메모리를 재 할당하기 위해 잠시 동안 메모리를 사용합니다.

슬라이스 할당자가 강제로 malloc처럼 동작하게하려면 환경 변수 G_SLICE=always-malloc을 사용하십시오. 프로덕션에는 권장하지 않지만 GLib 프로그램에서 valgrind를 사용하는 것이 좋습니다.