dubugging为什么这个代码给分段错误
计划接收信号SIGSEGV,分割故障时,这是错误。 [切换到 线程0x7ffff6ff5700(LWP 17504)] 0x0000000040124c在推送 (q = 0x7ffff6ff4ec0,n = ...)在discover.h:27 27
q-> TailCpuNode-> next = temp;
typedef struct CpuNode
{
struct CpuNode *next;
int cpuid;
}CpuNode;
typedef struct List
{ struct CpuNode *HeadCpuNode;
struct CpuNode *TailCpuNode;
}List;
inline static void push(struct List *q,CpuNode *n){
struct CpuNode *temp;
temp= (struct CpuNode *)malloc(sizeof(struct CpuNode));
temp->cpuid=n->cpuid;
temp->next=NULL;
if (q->HeadCpuNode==NULL) q->HeadCpuNode=q->TailCpuNode=temp;
else {
q->TailCpuNode->next=temp;
q->TailCpuNode=temp;
}
}
void Discover(struct List *Acqcores){
struct CpuNode *temp;
temp= (CpuNode *)malloc(sizeof(struct CpuNode));
temp->cpuid=1;
push(Acqcores,temp);
}
int main(int argc, char **argv) {
struct List Acq_cores;
Discover(&Acq_cores);
}
仅根据那条消息,我会说'q'或'q-> TailCpuNode'不包含确定地址。有时间启动调试器并开始向后走动调用堆栈。 – WhozCraig
你能给我们足够的代码来复制这个问题吗? –
从这里开始:https://stackoverflow.com/help/how-to-ask。然后使用您的调试器来缩小问题范围。然后问一个具体的问题,如果你不明白你的调试工作的结果。 –