記一次C 中關於strlen 的錯誤

2021-09-12 18:49:50 字數 587 閱讀 3460

起因

c++課實驗,將乙個類str2中的字串成員變數追加到str中的字串。編譯沒有問題,執行時在中間卡住無法繼續執行。錯誤

應該是某個變數申請的記憶體不夠,導致寫入字元時越界。

**

const

char

* mystring::(

const

char

* p)

return m_pbuf;

}

錯因

儘管為tmp分配了記憶體,還未寫入字元,strlen(tmp)為0。

解決方法

strlen(tmp) + 1改為m_len + strlen(p) + 1總結

strlen() 是乙個函式,它用來計算指定字串 str 的長度,但不包括結束字元(即 『\0』 字元)。其原型如下面的**所示:

size_t strlen

(char

const

* str)

;

計算的是字串中字元個數,不能計算所佔空間。

記一次shm open返回EINVAL的錯誤排查

看redis的bg資料拷貝的時候想起程序的資料是cow的,想寫個程式看看cow的細節,因為要用到訊號量操作sem post和sem wait,訊號量的建立依賴於共享記憶體物件shm open,因為很久沒使用過的這個系統呼叫結果導致出了烏龍,把第乙個引數name給當成了路徑 名字,結果建立的時候返回的...

記一次關於vue效能問題

當時開發專案的時候,涉及到乙個操作列表 不是單純展示的列表,裡面包含很多操作功能 的功能。把列表的每個小item寫成乙個子元件,當時寫子元件沒有考慮到資料量的問題。所以在寫子元件,並沒有做什麼優化,而且裡面還加了form表單校驗,裡面還有很多事件處理,樣式處理等等複雜的邏輯。注意 首先需要從設計上面...

記一次下午關於linux的思考

參考 授予普通使用者sudo許可權 由之前的用php的exec呼叫phantomjs生成一直沒有生成出來,然後我試了直接用命令執行就可以,然後參考了這位老兄的最後八字真言 珍愛生命,遠離 root。給了我啟發,然後我去看php fpm配置conf使用者和使用者組是nginx,然後我嘗試切換到ngin...