簡體   English   中英

C ++中帶有指針的分段錯誤

[英]Segmentation Fault with Pointers in C++

我正在嘗試構建結構的對象,但在分配值時遇到分段錯誤。 構建對象后,它將通過指針傳遞到列表中。 這是我的實現:

struct clientInfo {
  int client, a, b;
};
List *info=new List();

void thread(int which) {
  clientInfo *cI;
  cI->client=which;
  cI->a=4;
  cI->b=5;
  info->Append(cI);
}

在執行“ cI-> client =哪一個”的過程中,產生了分段錯誤。 這個項目正在nachos平台上為任何熟悉的人編寫,但是List的定義與C ++中的任何鏈接列表幾乎相同。 對於任何不熟悉玉米片的人,“空線程”是我的“ int main”。

提前致謝。

clientInfo *cI; 聲明一個指向clientInfo類型的對象的指針。 它不會構造此對象。 您必須先構造它,然后才能嘗試訪問其成員: cI = new clientInfo();

您必須創建clientInfo *cI ,例如

clientInfo *cI = new clientInfo();

當分配了ci-> 成員時, cI指針實際上指向“對您沒有意義的地方”。 使用該指針之前,請將其初始化為某個指針(或為其分配一個指針)。

您不能直接將值分配給結構指針。應該使用new這樣的分配給它一些分配:

 clientInfo *cI =new  clientInfo();

如果您不希望這樣做,則只需對對象進行除垢,而不要對指針* cI進行除垢。 如下所示:

clientInfo cI;

現在,您可以直接分配cI.a=...類的值cI.a=...並且此數據將存儲在堆棧中而不是堆中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM