面試總結 strcpy函式的一系列bug

2021-09-29 05:22:33 字數 745 閱讀 2878

今天去面試,碰到了天殺的strcpy,然後面試官讓我把其祖宗十八代交代下,傻眼了,接下來就好好總結一哈,防患於未然~~~~

記憶體越界

當要拷貝的源字串大於目標串的長度時,由於無法根據指標判斷其所指定的長度,所以陣列記憶體邊界是不知道的,會導致潛在的記憶體越界問題,這個會死人的

效率低當目標陣列的長度大於源字串的長度時會在其末尾一直新增結束符\0,一直到陣列滿為止

\0丟失

當源字串的長度剛好等於目標陣列長度時,會使得最後目標字串結束符\0丟失

記憶體覆蓋問題

當源字串和目標串記憶體一樣(重疊)時就傻眼了

最後面試官肯定讓你自己手寫乙個strcpy,以下是**

char

*strcpy

(char

*strdest,

const

char

* strsrc)

tp = strdest;

while((

*strdest++

=*strsrc ++)!=

'\0');

return tp;

}

2023年10月31日下午16:45

by 打不死的小強

idea使用mariadb資料庫時的一系列問題

之前在學習jdbc的時候遇到過很多次無法連線資料庫的情況忘了總結,以後如果再遇到了慢慢總結在這裡面,以後肯定還會遇到很多次。問題一 在使用structs框架時連線資料庫失敗 報錯如下圖所示 提示說找不到驅動類 一開始以為是匯入包沒有成功 依次嘗試了 匯入包把包放進tomcat裡面 均沒有成功 檢視x...

關於一系列的f函式

fopen 函式的使用 fopen 檔名 選擇方式 選擇方式有常見的兩種 r 關於r,開啟乙個已存在的文字檔案,只能從中讀取資料 w 關於w,開啟或新建乙個文字檔案,只能寫入資料,若檔案已存在則覆蓋原全部內容 廢話不多說,直接上 讀取乙個建立過的文件內容 include int main print...

oracle建立 刪除索引以及對字段的一系列操作

一 建立索引 create index 索引名 on 表名 列名 二 查詢索引 根據索引名,查詢表索引字段 select from user ind columns where index name 索引名 根據表名,查詢一張表的索引 select from user indexes where t...