我有一个以前由 malloc 分配的结构数组。释放它:free(temp) 可以吗?temp 是数组的名称。或者我应该逐个元素地释放元素?
是的。这个函数。好吧,我添加了structs.cur_node 的声明是Node 的一个var。我使用Node 创建了链表。并逐个节点释放它。
struct Node
{
char template_id[6];
double tm_score;
double rmsd;
double sequence_id;
int length;
double translation_vector1;
double translation_vector2;
double translation_vector3;
double rotation_matrix1;
double rotation_matrix2;
double rotation_matrix3;
double rotation_matrix4;
double rotation_matrix5;
double rotation_matrix6;
double rotation_matrix7;
double rotation_matrix8;
double rotation_matrix9;
char target_sequence[2000];
char template_sequence[2000];
struct Node *next;
};
struct Node *start_node, *cur_node;
typedef struct
{
char *template_id;
double tm_score;
double rmsd;
double sequence_id;
int length;
double translation_vector1;
double translation_vector2;
double translation_vector3;
double rotation_matrix1;
double rotation_matrix2;
double rotation_matrix3;
double rotation_matrix4;
double rotation_matrix5;
double rotation_matrix6;
double rotation_matrix7;
double rotation_matrix8;
double rotation_matrix9;
char *target_sequence;
char *template_sequence;
} Node1;
void traverseAlignLList()
{
Node1 *temp;
struct Node *old_node;
int temp_counter=0;
cur_node=start_node;
temp=malloc(alignCounter*sizeof(Node1));
while(cur_node!=NULL)
{
temp[temp_counter].template_id=malloc(6*sizeof(char));
strcpy(temp[temp_counter].template_id,cur_node->template_id);
temp[temp_counter].tm_score=cur_node->tm_score;
temp[temp_counter].rmsd=cur_node->rmsd;
temp[temp_counter].sequence_id=cur_node->sequence_id;
temp[temp_counter].length=cur_node->length;
temp[temp_counter].translation_vector1=cur_node->translation_vector1;
temp[temp_counter].translation_vector2=cur_node->translation_vector2;
temp[temp_counter].translation_vector3=cur_node->translation_vector3;
temp[temp_counter].rotation_matrix1=cur_node->rotation_matrix1;
temp[temp_counter].rotation_matrix2=cur_node->rotation_matrix2;
temp[temp_counter].rotation_matrix3=cur_node->rotation_matrix3;
temp[temp_counter].rotation_matrix4=cur_node->rotation_matrix4;
temp[temp_counter].rotation_matrix5=cur_node->rotation_matrix5;
temp[temp_counter].rotation_matrix6=cur_node->rotation_matrix6;
temp[temp_counter].rotation_matrix7=cur_node->rotation_matrix7;
temp[temp_counter].rotation_matrix8=cur_node->rotation_matrix8;
temp[temp_counter].rotation_matrix9=cur_node->rotation_matrix9;
temp[temp_counter].target_sequence=malloc(2000*sizeof(char));
strcpy(temp[temp_counter].target_sequence,cur_node->target_sequence);
temp[temp_counter].template_sequence=malloc(2000*sizeof(char));
strcpy(temp[temp_counter].template_sequence,cur_node->template_sequence);
temp_counter++;
old_node=cur_node;
cur_node=cur_node->next;
free(old_node);
}
addAlignData(temp);
free(temp);
//free(cur_node);
//free(start_node);
start_node=NULL;
}