我试图了解内存分配并在 ANSI C 中释放它们。问题是我不知道何时释放它们。
1)程序退出是否释放分配的内存本身(即使我没有这样做free()
)?
2)假设我的代码是这样的:(请不要担心这些结构的完整代码。我只关注逻辑)
snode = (stock_node *) realloc(snode, count * sizeof(stock_node));
struct stock_list slist = { snode, count };
stock_list_ptr slist_ptr = (stock_list_ptr) malloc(sizeof(stock_list_ptr));
slist_ptr = &slist;
tm->stock = slist_ptr;
以上;snode 到 stock_list,stock_list 到 slist 指针,然后到 tm->stock。
现在,由于我已将它们全部分配到最后的 tm->stock,我是否必须释放 snode 和 slist_ptr?因为 tm 结构将用于程序的其余部分。如果我释放 snode 和 slist_ptr 会 tm struct 丢失值吗?