I have the following function:
edge** graph_out_edges(graph* g, int src) {
    int i;
    int num_edges = 0;
    edge** es = (edge**) malloc(sizeof(edge*) * g->num_edges);
    for (i = 0; i < g->num_edges; i++) {
        if (src == g->edges[i]->src) {
            es[num_edges++] = g->edges[i];
        }
    }
    es[num_edges] = NULL;
    return es;
}
I add a breakpoint to the function using b graph_out_edges, run the program using r, and then continue (c) twice (I get a segfault if I continue again). I then n through the function until it moves to the command just after the call to the function
edge** new = graph_out_edges(g, min->dest);
p new[0] and p new[1] give valid edges (the members are populated), and p new[2] gives 0x0, as expected. I then type r to restart the program, again continuing twice, but this time I then type ret (confirming I want to return), type n to execute the assignment, but now when I type p new[0] I get
Cannot access memory at address 0x2
(Just for clarity, p new now says $10 = (edge**) 0x2)
Any suggestions on why there is this discrepancy between the return value when "nexting" through the function manually and forcing a return?
 
    