Это действительно меня поразило, у меня есть программа, в которую я также добавляю некоторые дополнительные функции, и одна вещь, которую я пытаюсь сделать, это реализовать связанный список. Сначала немного кода:
#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%, пока программа «сидит». Кроме того, программа, к которой я добавляю список, является симулятором Simple-Scalar «sim-cache».