簡體   English   中英

c雙指針給出沒有意義的錯誤

[英]c double pointer giving error that doesn't make sense

int p_entity(char **data){
  char *pch;

  pch = strtok(*data, " \n");
  // printf("%s ", pch);
  pch = strtok(NULL, " \n");
  // (*data) = (*data) + 1;   // 1. this is okay
  //  (*data) = pch;          // 2. but doing this will cause an error
  printf("%c %d \n", *pch, pch); 
  printf("%c %d \n", **data, *data);
}

從上面的代碼中,如果我取消注釋1,我將得到以下內容:

g 4927479
e 4927456

如果我取消注釋2,我會得到以下內容:

g 4927479
g 4927479
      3 [main] main 8172 exception::handle: Exception: STATUS_ACCESS_VIOLATION
    470 [main] main 8172 open_stackdumpfile: Dumping stack trace to main.exe.stackdump

誰能解釋為什么我會收到這個錯誤? 我認為這兩項任務都是合法的,增量(*數據)相當於直接分配我想要的地址。

看起來即使你收到錯誤(並取消注釋2),你仍然得到兩個printfs ...似乎它在你的代碼中稍后崩潰。

答案實際上取決於您在調用此函數之前和之后處理數據的方式。

如果你在調用這個函數之前為* data分配內存並在這個函數返回后綁定釋放它,它可能會崩潰,因為你已經改變了它的值。

暫無
暫無

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

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