예제 #1
0
void
gum_sanity_checker_destroy (GumSanityChecker * checker)
{
  GumSanityCheckerPrivate * priv = checker->priv;

  if (priv->bounds_checker != NULL)
  {
    g_object_unref (priv->bounds_checker);
    priv->bounds_checker = NULL;
  }

  if (priv->instance_tracker != NULL)
  {
    g_object_unref (priv->instance_tracker);
    priv->instance_tracker = NULL;
  }

  if (priv->alloc_probe != NULL)
  {
    g_object_unref (priv->alloc_probe);
    priv->alloc_probe = NULL;

    g_object_unref (priv->alloc_tracker);
    priv->alloc_tracker = NULL;
  }

  gum_heap_api_list_free (checker->priv->heap_apis);

  gum_free (checker);
}
예제 #2
0
static void
gum_page_pool_finalize (GObject * object)
{
  GumPagePool * self = GUM_PAGE_POOL (object);
  GumPagePoolPrivate * priv = GUM_PAGE_POOL_GET_PRIVATE (self);

  gum_free (priv->block_details);
  gum_free_pages (priv->pool);

  G_OBJECT_CLASS (gum_page_pool_parent_class)->finalize (object);
}
예제 #3
0
/**
 * gum_list_free:
 * @list: a #GumList
 *
 * Frees all of the memory used by a #GumList.
 * The freed elements are returned to the slice allocator.
 *
 * <note><para>
 * If list elements contain dynamically-allocated memory,
 * they should be freed first.
 * </para></note>
 */
void
gum_list_free (GumList *list)
{
    GumList * walk;

    for (walk = list; walk != NULL;)
    {
        GumList * next;

        next = walk->next;
        gum_free (walk);
        walk = next;
    }
}
예제 #4
0
void
gum_cobject_free (GumCObject * cobject)
{
  gum_free (cobject);
}
예제 #5
0
void
gum_allocation_block_free (GumAllocationBlock * block)
{
  gum_free (block);
}