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。然後使用您的調試器來縮小問題範圍。然後問一個具體的問題,如果你不明白你的調試工作的結果。 –