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