gpt4 book ai didi

c - 指针赋值导致程序停止

转载 作者:行者123 更新时间:2023-11-30 16:01:33 25 4
gpt4 key购买 nike

这真的让我很困惑,我有一个程序,我也添加了一些附加功能,我想做的一件事是实现一个链接列表。首先,一些代码:

#include <stdio.h>
#include "host.h"
#include "misc.h"
#include "machine.h"

struct miss_pile{
md_addr_t tag;
unsigned int isCon;
char block_type;
char culprit_type;
struct miss_pile * next;

}*head=0, *linkPtr, *tail=NULL, *newLink;
typedef struct miss_pile mp;

void add_beg(md_addr_t new_tag/*int new_tag*/, char blk_type, char evicter_type){

newLink = (mp *)malloc(sizeof(mp));
newLink->tag = new_tag;
newLink->block_type = blk_type;
newLink->culprit_type = evicter_type;
newLink->isCon = 0;

if (head == NULL){
head=newLink;
head->next=NULL;
head->tag = new_tag;
head->block_type = blk_type;
head->culprit_type = evicter_type;
head->isCon=0;
}
else if (head != NULL)
{
newLink->next=head;
head = newLink;
}
}

我确定这一行是程序似乎停止的地方

head=newLink;

一旦我排除了这段代码,程序就可以正常运行,但当然它是非常重要的代码。任何帮助或见解将不胜感激!

需要注意的一些事情,当程序“静止”时,处理器保持在 100%。另外,我添加列表的程序是 SimpleScalar 的“sim-cache”模拟器。

最佳答案

首先,我认为你可以像这样简化你的功能:

void add_beg(md_addr_t new_tag/*int new_tag*/, char blk_type, char evicter_type){

newLink = (mp *)malloc(sizeof(mp));
newLink->tag = new_tag;
newLink->block_type = blk_type;
newLink->culprit_type = evicter_type;
newLink->isCon = 0;
/* on the first call, head is NULL, and it's exactly what we want */
newLink->next = head;
/* then head point to the new element */
head = newLink;
}

其次,我很确定您的错误来自代码中的其他地方,可能是与您的全局变量 head 交互的其他一些函数?当然也可能是其他任何东西:)

关于c - 指针赋值导致程序停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6427633/

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