gpt4 book ai didi

c - 结构数组的空闲内存

转载 作者:太空狗 更新时间:2023-10-29 15:24:20 24 4
gpt4 key购买 nike

我有一个之前由 malloc 分配的结构数组。释放它:免费(临时)可以吗? temp 是数组的名称。或者我应该逐个释放元素?

是的。这个函数。好吧,我添加了结构的声明。cur_node 是 Node 的一个变量。我使用 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;
}

最佳答案

如果您使用一个 malloc 来分配数组,一个 free 就足够了。

经验法则,每个 malloc 都需要一个免费的!

关于c - 结构数组的空闲内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19823308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com