use g_slice* to alloc memory