Hi, answers below.

On Fri, Sep 11, 2015 at 10:48 PM, Szabolcs Horvát <[email protected]> wrote:
[...]
> Do all these igraph functions (e.g. igraph_cliques) handle pointer
> vectors in the same way?

I doubt it. Some of them were written earlier, and some things, e.g.
the _free_all() method are newer.

> In particular, do they have destructors set
> already?  Perhaps some functions set destructors and some don't? Do
> all require already initialized pointer vectors?

I cannot tell you, I would need to go and look. Usually functions
assume that the vectors passed as arguments are initialized. But
whether the contents of the ptr vector are initialized is a different
question.

> Roughly, this is what I'm doing:
>
> igraph_vector_ptr_t list;
>
> igraph_vector_ptr_init(&list, 0);
>
> // make sure the right destructor is set
> IGRAPH_VECTOR_PTR_SET_ITEM_DESTRUCTOR(&list, igraph_vector_destroy);
>
> igraph_some_function(..., &list, ...);
>
> // use list in some way ...
>
> // this should free
> igraph_vector_ptr_destroy_all(&list);
>
> Is this way general enough to handle *any* igraph function that
> returns multiple vectors this way?

Might not be. I would read the documentation of igraph_some_function

> Instead of setting a destructor, I could loop through it and free
> elements by hand. Some examples do that.

That was before Tamas added the destroy_all() method.

> Finally, I notice that some examples use free() and not igraph_free()
> to free memory. Do I need to worry about this and the potential
> differences between the two if igraph itself and my program use
> different compilers?  Shouldn't igraph provide an igraph_malloc in
> addition to igraph_free to make sure that memory I might allocate will
> be correctly freed by igraph_vector_ptr_free_all()? This last one is
> so far a theoretical question as I don't yet need this.

Don't worry about free and igraph_free. AFAIR igraph_free is newer,
and the idea was that we could use different allocators, but in the
end we never did this.

I guess we could still convert all free() to igraph_free()

GAbor

> Szabolcs
>
> _______________________________________________
> igraph-help mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/igraph-help

_______________________________________________
igraph-help mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/igraph-help

Reply via email to