簡體   English   中英

c-分段錯誤(核心轉儲)指針問題

[英]c - segmentation fault (core dumped) pointer issue

當我嘗試使用參數運行程序時,出現分段錯誤錯誤。 現在,我已經通過GDB運行它,找到了有問題的行,它看起來像這樣:

*dstip = (*optarg);

原型是:

char *dstip;

最后在這一行中被調用:

char *filter = ("ip dest host %s", dstip);

現在回首它,我並不感到驚訝,因為它看起來不正確……坦白說是錯誤的,並且通過完全刪除這些行(並更改了過濾器文本)解決了該問題。 但是,我需要使用輸入的IPv4地址以顯示在錯誤消息過濾器中,並且不能與指針一起使用,並且反復嘗試了各種不同的方法,我無法正確使用它。 就是說,我只得到warning initialization makes pointer from integer之類開始……該怎么辦?

該聲明

*dstip = (*optarg);

沒有將dstip設置為指向optarg 相反,它設置什么樣的第一個字符dstip指向相同的值作為第一個字符是optarg點。 即與

dstip[0] = optarg[0];

由於dstip是未初始化的指針,因此您更改了內存中的未分配區域,這將導致發生奇怪的事情。

另外,表達

("ip dest host %s", dstip)

不會執行您認為會做的事情,至少在您認為它將返回格式化的字符串的情況下。 它的真正作用是使用逗號運算符,該運算符可對逗號兩邊的表達式求值,但僅返回逗號右邊的表達式的結果。

暫無
暫無

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

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