課程
/后端開發(fā)
/C
/C語言入門
/bin/bash: line 1: 22566 Segmentation fault????? (core dumped) hello
2018-10-13
源自:C語言入門 5-9
正在回答
1.內(nèi)存訪問越界
?a) 由于使用錯誤的下標(biāo),導(dǎo)致數(shù)組訪問越界
?b) 搜索字符串時,依靠字符串結(jié)束符來判斷字符串是否結(jié)束,但是字符串沒有正常的使用結(jié)束符
?c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函數(shù),將目標(biāo)字符串讀/寫爆。應(yīng)該使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等函數(shù)防止讀寫越界。
2 多線程程序使用了線程不安全的函數(shù)。
3 多線程讀寫的數(shù)據(jù)未加鎖保護(hù)。對于會被多個線程同時訪問的全局?jǐn)?shù)據(jù),應(yīng)該注意加鎖保護(hù),否則很容易造成core dump
4 非法指針
a) 使用空指針
b) 隨意使用指針轉(zhuǎn)換。一個指向一段內(nèi)存的指針,除非確定這段內(nèi)存原先就分配為某種結(jié)構(gòu)或類型,或者這種結(jié)構(gòu)或類型的數(shù)組,否則不要將它轉(zhuǎn)換為這種結(jié)構(gòu)或類型 的指針,而應(yīng)該將這段內(nèi)存拷貝到一個這種結(jié)構(gòu)或類型中,再訪問這個結(jié)構(gòu)或類型。這是因為如果這段內(nèi)存的開始地址不是按照這種結(jié)構(gòu)或類型對齊的,那么訪問它 時就很容易因為bus error而core dump.
舉報
C語言入門視頻教程,帶你進(jìn)入編程世界的必修課-C語言
4 回答這是怎么了
1 回答我這是怎么了
3 回答我這個是怎么了
2 回答這個是怎么錯了
2 回答這是缺[]這個嗎?我怎么過了
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2019-01-07
1.內(nèi)存訪問越界
?a) 由于使用錯誤的下標(biāo),導(dǎo)致數(shù)組訪問越界
?b) 搜索字符串時,依靠字符串結(jié)束符來判斷字符串是否結(jié)束,但是字符串沒有正常的使用結(jié)束符
?c) 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函數(shù),將目標(biāo)字符串讀/寫爆。應(yīng)該使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等函數(shù)防止讀寫越界。
2 多線程程序使用了線程不安全的函數(shù)。
3 多線程讀寫的數(shù)據(jù)未加鎖保護(hù)。對于會被多個線程同時訪問的全局?jǐn)?shù)據(jù),應(yīng)該注意加鎖保護(hù),否則很容易造成core dump
4 非法指針
a) 使用空指針
b) 隨意使用指針轉(zhuǎn)換。一個指向一段內(nèi)存的指針,除非確定這段內(nèi)存原先就分配為某種結(jié)構(gòu)或類型,或者這種結(jié)構(gòu)或類型的數(shù)組,否則不要將它轉(zhuǎn)換為這種結(jié)構(gòu)或類型 的指針,而應(yīng)該將這段內(nèi)存拷貝到一個這種結(jié)構(gòu)或類型中,再訪問這個結(jié)構(gòu)或類型。這是因為如果這段內(nèi)存的開始地址不是按照這種結(jié)構(gòu)或類型對齊的,那么訪問它 時就很容易因為bus error而core dump.