在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言的哪些函數會導致內存溢出?如何改進?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2023-08-01 17:06 ? 次閱讀

看一道大華的面試題,題目并不難。

問strcat strncat strcmp strcpy哪些函數會導致內存溢出?如何改進?

這幾個函數,要說跟內存溢出沒有關系的,只有strcmp。

它的功能只是比較兩個字符串是否相等,給定地址,然后從地址開始逐個向后比較,并不涉及寫內存,所以也不存在溢出的說法。

剩下的三個函數都有可能導致內存溢出。

就拿strcpy來說,作用就是把源字符串拷貝到目的內存中,實現的方法就是循環逐個賦值,如果源字符串過長,strcpy也不好把控,這樣就會導致一些未知的情況發生。

那么有人可能會問,strcpy里面為什么不做個判斷,如果目的內存不夠,就停止賦值。

我們來看下strcpy的參數。

char *strcpy(char *dest, const char *src);

只有兩個地址,在C語言中,只給你一個地址,是不好知道從這個地址開始,向后多少個字節是能用的。

于是在某些平臺上,就出現了strcpy_s這樣的函數。

strcpy_s(char *dest, int size, const char *src);

功能和strcpy差不多,就是多了個參數,第二個參數表示目的內存的大小,這樣在拷貝的時候,就能精確的判斷出內存是否越界。

當然了,如果你傳參的時候瞎寫了一個長度,這就不是函數的問題了,是你的問題。

strcat也是用樣的問題,把一個字符串接在另一個字符串的后面,這個過程也沒有考慮內存越界的問題。

strncat雖然可以指定連接的字符個數,但是函數內部在使用內存的時候,也沒有做內存越界的判斷,越不越界只能靠用戶自己把握。




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140552
  • 內存溢出
    +關注

    關注

    0

    文章

    10

    瀏覽量

    1320

原文標題:C語言的哪些函數不安全

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    C語言函數調用過程中的內存變化解析

    相信很多編程新手村的同學們都會有一個疑問:C 語言如何調用函數的呢?局部變量的作用域為什么僅限于函數內?這個調用不是指C
    的頭像 發表于 12-11 16:21 ?4008次閱讀

    C語言使用函數調用的知識點

    C語言使用函數調用,我們再熟悉不過了,但是函數調用在內存中究竟發生了什么真的清楚嗎?只有搞清楚內存
    發表于 09-07 11:47 ?1013次閱讀

    C語言內存知識總結:memset函數和calloc函數

    memset(翻譯:清零)是計算機中C/C++語言初始化函數。作用是將某一塊內存中的內容全部設置為指定的值, 這個
    發表于 10-24 10:40 ?1338次閱讀

    詳解C語言中整形溢出問題

    整型溢出有點老生常談了,bla, bla, bla… 但似乎沒有引起多少人的重視。整型溢出會有可能導致緩沖區溢出,緩沖區溢出
    的頭像 發表于 11-06 10:58 ?1637次閱讀
    詳解<b class='flag-5'>C</b><b class='flag-5'>語言</b>中整形<b class='flag-5'>溢出</b>問題

    MSP430 C語言編程的程序堆棧溢出分析

    MSP430 C語言編程的程序堆棧溢出分析
    發表于 05-16 15:04 ?40次下載

    MicroBlaze:malloc 函數動態分配內存溢出

    首先說明一點,MicroBlaze C函數庫支持標準的內存管理函數,如malloc(),calloc(), free(),這些標準的C
    發表于 02-11 11:43 ?2129次閱讀
    MicroBlaze:malloc <b class='flag-5'>函數</b>動態分配<b class='flag-5'>內存</b><b class='flag-5'>溢出</b>

    內存溢出內存泄露的區別_內存溢出的原因以及解決方法

    內存溢出內存泄露的區別是什么?內存溢出怎么解決?內存溢出
    發表于 06-01 10:27 ?3059次閱讀

    C語言使用函數調用在內存中究竟發生了什么?

    C語言使用函數調用,我們再熟悉不過了,但是函數調用在內存中究竟發生了什么真的清楚嗎?只有搞清楚內存
    的頭像 發表于 01-13 14:09 ?1513次閱讀

    如何解決內存溢出

    ,有時候自動關閉軟件,重啟電腦或者軟件后釋放掉一部分內存又可以正常運行該軟件,而由系統配置、數據流、用戶代碼等原因而導致內存溢出錯誤,即
    的頭像 發表于 09-25 10:54 ?1719次閱讀
    如何解決<b class='flag-5'>內存</b><b class='flag-5'>溢出</b>

    java內存溢出排查方法

    Java內存溢出(Memory overflow)是指Java虛擬機(JVM)中的堆內存無法滿足對象分配的需求,導致程序拋出OutOfMemoryError異常。
    的頭像 發表于 11-23 14:46 ?3820次閱讀

    c語言整型數據的溢出計算

    C語言編程過程中,對于整型數據的溢出問題需要特別關注。當整型數據的值超過了它所能表示的范圍時,會發生溢出現象,導致結果不準確甚至出現異常。
    的頭像 發表于 11-30 11:45 ?5112次閱讀

    c語言中數據溢出是歸0還是歸1

    C語言中,數據溢出通常不會自動歸0或歸1,而是發生未定義行為。這是因為C語言中的數據類型都有一定范圍,超出該范圍的值
    的頭像 發表于 11-30 11:47 ?3559次閱讀

    jvm內存溢出該如何定位解決

    在Java應用程序中,JVM(Java虛擬機)內存溢出是指Java應用程序試圖分配的內存超過了JVM所允許的最大內存大小,導致程序無法正常執
    的頭像 發表于 12-05 11:05 ?1624次閱讀

    內存溢出內存泄漏:定義、區別與解決方案

    與區別 1. 定義: 內存溢出(Memory Overflow)指的是程序在申請內存時,無法獲得足夠的內存空間,導致程序拋出異常或崩潰。當程
    的頭像 發表于 12-19 14:10 ?3498次閱讀

    C語言內存泄漏問題原理

    內存泄漏問題只有在使用堆內存的時候才會出現,棧內存不存在內存泄漏問題,因為棧內存自動分配和釋放
    發表于 03-19 11:38 ?770次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>內存</b>泄漏問題原理
    主站蜘蛛池模板: 国产乱辈通伦影片在线播放 | 老师别揉我胸啊嗯上课呢视频 | 亚洲伊人成人 | 日韩一级片免费 | 综合网激情五月 | 免费公开在线视频 | 三级毛片在线播放 | 黄蓉吕文德欲乱系列小说 | 免费的毛片 | 五月婷婷视频在线 | 一级黄视频 | 午夜影院一级片 | 福利视频免费看 | 蕾丝视频成人★在线观看 | 中国一级做a爰片久久毛片 中韩日欧美电影免费看 | 色94色欧美一区 | 成人a视频 | 日韩精品卡4卡5卡6卡7卡 | 俄罗斯小屁孩cao大人免费 | 国产一级做a爰片久久毛片男 | 亚洲国产日韩女人aaaaaa毛片在线 | 午夜在线看片 | 一区二区三区精品视频 | 欧美一区二区三区黄色 | 亚洲伊人99综合网 | 五月婷婷综合激情网 | sao虎在线精品永久 se94se欧美 | 成人夜色香网站在线观看 | www你懂的 | 国产在线精品一区二区夜色 | 成人a毛片在线看免费全部播放 | 免费在线观看你懂的 | 菲菲国产在线观看 | 夜夜春夜夜爽 | www.夜夜爽 | 狠狠操狠狠操 | 干干人人 | 免费黄色一级毛片 | 婷婷丁香色综合狠狠色 | 成人欧美网站 | 亚洲午夜一级毛片 |