我有以下函数。我认为 free(temp) 没有释放所有分配的内存。当我给这三个字段 NULL 时,我的程序工作正常。当我给它们提供常规值时,我的程序在 20 分钟后被 Linux 杀死正常的 IO 操作。在 20 分钟内,我的程序起初运行得很快,然后在被杀死之前变慢。所以我想我也应该释放字段的分配或发生其他事情?字段为 char*。
void traverseAlignLList()
{
Node1 *temp;
struct Node *old_node;
int temp_counter=0;
int i;
cur_node=start_node;
temp=malloc(alignCounter*sizeof(Node1));
while(cur_node!=NULL)
{ temp[temp_counter].template_id=malloc((strlen(cur_node->template_id)+1)*sizeof(char));
strcpy(temp[temp_counter].template_id,cur_node->template_id);
temp[temp_counter].target_sequence=malloc((strlen(cur_node->target_sequence)+1)*sizeof(char));
strcpy(temp[temp_counter].target_sequence,cur_node->target_sequence);
temp[temp_counter].template_sequence=malloc((strlen(cur_node->template_sequence)+1)*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);
temp=NULL;
start_node=NULL;
}