を与えているこれはdubuggingは、なぜ、このコードは、セグメンテーション違反に
プログラムはシグナルSIGSEGV、セグメンテーションフォールトを受信したエラーです。 [ スレッド0x7ffff6ff5700(LWP 17504)への切り替え] (q = 0x7ffff6ff4ec0、n = ...)discover.h:27 27
q-> TailCpuNode-> next = temp;プッシュの0x000000000040124cへの切り替え。
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。次に、デバッガを使用して問題を絞り込みます。デバッグ作業の結果が分からない場合は、特定の質問をしてください。 –