问我正在分配包含指向其他动态分配对象的指针的结构。当我释放一个结构时,是否也必须释放每个附属指针?
答是的。malloc对结构声明或已分配内存的内容一无所知;它尤其不知道已分配的内存是否包含指向其他已分配内存的指针。一般来说,您必须安排从malloc中返回的每个指针free都单独传递给,并且只传递一次(如果确实要释放)。
一个好的经验法则是,程序中每次调用malloc时,您都应该能够指向该free调用释放的内存。malloc(在许多情况下,您将以与分配时相反的顺序释放内存块,尽管并非强制要求这种顺序。)
另请参见问题 7.24。