[英]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.