[問題] 用指標讀取struct的內容 記憶區段錯誤
問題(Question):
我將指向struct的指標傳入函式createListNode作malloc
離開函式後用指標去讀struct內容就會發生記憶體錯誤
預期的正確結果(Expected Output):
主程式將struct內的變數值印出後結束
錯誤結果(Wrong Output):
執行到取值時顯示 程式記憶體區段錯誤
程式碼(Code):(請善用置底文網頁, 記得排版)
struct posnode{
long pagepos;
};
typedef struct posnode PosNode;
typedef PosNode *PosNodePtr;
PosNodePtr startPtr = NULL;
static void createListNode(PosNodePtr ptr);
int main(){
createListNode(startPtr); //傳入指標
printf("startPtr->pagepos=%ld\n", startPtr->pagepos);
//這邊取值時記憶體錯誤
free(startPtr);
return 0;
}
static void createListNode(PosNodePtr ptr){
ptr = malloc(sizeof(PosNode));
if(ptr!=NULL){
ptr->pagepos = 20;
printf("ptr->pagepos=%ld\n", ptr->pagepos);
//這邊取值時ok
}
}
補充說明(Supplement):
應該是指標傳入函式的問題, 若傳入的是&startPtr,
並且函式用PosNodePtr *ptr來接, 就能正常結束
這邊想不通為何我原先的作法有問題, 麻煩幫我解惑, 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.186.181
→
06/06 12:09, , 1F
06/06 12:09, 1F
→
06/06 12:10, , 2F
06/06 12:10, 2F
→
06/06 12:14, , 3F
06/06 12:14, 3F
→
06/06 12:17, , 4F
06/06 12:17, 4F
→
06/06 13:18, , 5F
06/06 13:18, 5F
推
06/06 16:42, , 6F
06/06 16:42, 6F