chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

養(yǎng)成良好的編程習(xí)慣|堆內(nèi)存初值不一定是0

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2024-12-18 09:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

什么是良好的編程習(xí)慣?可以看下這段代碼,有沒有什么問題?

#include 
#include 


int main()
{
char*s=(char*)malloc(1024);


    char ch;
    int i = 0;


    while ((ch = getchar()) != '
')
    {
        *(s + i++) = ch;
    }


    printf("%s
", s);


    return 0;
}

代碼很簡(jiǎn)單,使用 malloc 申請(qǐng)一段堆內(nèi)存,假設(shè)內(nèi)存空間足夠大。

通過 getchar 配合 while 循環(huán),從標(biāo)準(zhǔn)輸入獲取一個(gè)字符串,直到遇到換行符結(jié)束。

最后就是把獲取的字符串輸出。

乍一看,好像程序沒什么問題。

然后把程序運(yùn)行起來,多測(cè)試幾遍,也確實(shí)沒發(fā)現(xiàn)問題。

但是如果把代碼換個(gè)平臺(tái),比如放到了 Windows 上,使用 DEV C++ 編譯器,再次運(yùn)行,程序好像出了問題。

問題就出在了 malloc 函數(shù)上面。

malloc 用于申請(qǐng)堆內(nèi)存,但是堆內(nèi)存里面的內(nèi)容是不確定的。

剛才我們用的兩個(gè)編譯器,gcc 默認(rèn)把堆內(nèi)存初始化成了 0,所以使用 getchar 獲取多個(gè)字符后,最后是 ?,是個(gè)標(biāo)準(zhǔn)的字符串。

而使用 dev C++,最后一個(gè)字符的后面并不是 ?,輸出也就出了問題。

良好的編程習(xí)慣就是使用內(nèi)存的時(shí)候盡量初始化,如果代碼這樣寫,不管移植到哪個(gè)平臺(tái),都不會(huì)出問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    9

    文章

    3234

    瀏覽量

    76508
  • 編程
    +關(guān)注

    關(guān)注

    90

    文章

    3723

    瀏覽量

    97434
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4976

    瀏覽量

    74375

原文標(biāo)題:養(yǎng)成良好的編程習(xí)慣 | 堆內(nèi)存初值不一定是0

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    你的路由器信號(hào)變?nèi)蹩赡苤皇且驗(yàn)镾MA接口出現(xiàn)了氧化層

    信號(hào)變差不一定是固件或覆蓋問題,很可能是被忽視的物理細(xì)節(jié)——SMA接口氧化。本文由德索連接器(Dosin)技術(shù)專家撰寫,深入剖析趨膚效應(yīng)對(duì)高頻傳輸?shù)挠绊?,揭示阻抗失配?dǎo)致信號(hào)損耗的底層邏輯。
    的頭像 發(fā)表于 04-22 14:06 ?63次閱讀
    你的路由器信號(hào)變?nèi)蹩赡苤皇且驗(yàn)镾MA接口出現(xiàn)了氧化層

    面向視覺語言導(dǎo)航的任務(wù)驅(qū)動(dòng)式地圖學(xué)習(xí)框架MapDream介紹

    在視覺語言導(dǎo)航(VLN)中,地圖長(zhǎng)期作為獨(dú)立模塊構(gòu)建,并通過固定接口交由導(dǎo)航策略使用。無論是BEV網(wǎng)格、拓?fù)鋱D還是語義記憶模塊,這些表示大多脫離策略學(xué)習(xí)而設(shè)計(jì)。結(jié)果是,機(jī)器人即使掌握?qǐng)鼍暗男畔?,也仍可能繞行甚至偏離目標(biāo),因?yàn)榈貓D中編碼的,并不一定是決定導(dǎo)航成功的關(guān)鍵信息。
    的頭像 發(fā)表于 03-02 10:40 ?603次閱讀
    面向視覺語言導(dǎo)航的任務(wù)驅(qū)動(dòng)式地圖學(xué)習(xí)框架MapDream介紹

    curl中的TFTP實(shí)現(xiàn):整數(shù)下溢導(dǎo)致內(nèi)存越界讀取漏洞

    的條件:必須開啟 TFTP no options 模式,并且需要服務(wù)器將塊大小協(xié)商到個(gè)極小的值。 攻擊難度高 :利用該漏洞讀取到有價(jià)值信息(如密碼、密鑰等)的難度非常高。攻擊者很難精確控制內(nèi)存的布局
    發(fā)表于 02-19 13:55

    容易造成單片機(jī)內(nèi)存溢出的幾個(gè)陷阱介紹

    的函數(shù)遞歸調(diào)用的時(shí)候,大家盡量采用別的方式去代替。 區(qū):當(dāng)申請(qǐng)了動(dòng)態(tài)區(qū)域,用完的時(shí)候一定要記得釋放(free),如果沒有釋放,那么這塊內(nèi)存區(qū)域就將處于不可用狀態(tài)(就像占著茅坑不拉屎
    發(fā)表于 01-23 07:25

    C語言嵌入式系統(tǒng)編程注意事項(xiàng)-內(nèi)存操作

    啟動(dòng)后第條要執(zhí)行的指令的位置。 記?。汉瘮?shù)無它,唯指令集合耳;你可以調(diào)用個(gè)沒有函數(shù)體的函數(shù),本質(zhì)上只是換個(gè)地址開始執(zhí)行指令! 數(shù)組vs動(dòng)態(tài)申請(qǐng) 在嵌入式系統(tǒng)中動(dòng)態(tài)內(nèi)存申請(qǐng)存在比
    發(fā)表于 01-04 07:31

    如何成為編程高手

    、多與別人交流   三人行必有我?guī)煟苍S在次和別人不經(jīng)意的談話中,就可以迸出靈感的火花。多上上網(wǎng),看看別人對(duì)同問題的看法,會(huì)給你很大的啟發(fā)。   7、良好編程風(fēng)格   注意
    發(fā)表于 12-29 06:57

    不同位數(shù)的CPU的變量所占的內(nèi)存

    )上述表格適用于KEIL C51 和 KEIL MDK兩個(gè)版本中,不一定適用于其它編輯器,具體內(nèi)容,請(qǐng)查看KEIL軟件手冊(cè)。 2)CPU的位數(shù)不能決定int占幾個(gè)字節(jié),int是個(gè)關(guān)鍵字,只能本編譯器
    發(fā)表于 12-09 07:30

    使用Keil MicroLIB時(shí)自動(dòng)設(shè)置大小

    出錯(cuò)。 忍無可忍,決定分析下微庫(kù)是怎么管理的。 首先打開項(xiàng)目編譯后生成的鏈接地址映射文件Linker Address Map,我們這里是SmartOSF0_Debug.map 找到符號(hào)表段
    發(fā)表于 12-09 07:04

    深度睡眠時(shí)為什么串口會(huì)發(fā)送一堆 \\0?

    RT,初始化串口,發(fā)送數(shù)據(jù)然后休眠,串口工具會(huì)收到CW32L010發(fā)送的一堆? ,AI統(tǒng)計(jì)了下 128個(gè)字節(jié),是什么原因?。?/div>
    發(fā)表于 11-28 07:25

    和棧的區(qū)別

    個(gè)由C/C 編譯的程序占用的內(nèi)存分為以下幾個(gè)部分: 棧區(qū)(stack):由編譯器自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。 區(qū)(heap):
    的頭像 發(fā)表于 11-27 18:13 ?1230次閱讀

    WebGL/Canvas 內(nèi)存泄露分析

    的 JavaScript 對(duì)象未釋放要復(fù)雜得多。個(gè)現(xiàn)代 WebGL/Canvas 應(yīng)用的內(nèi)存版圖實(shí)際上跨越了三個(gè)截然不同但又相互關(guān)聯(lián)的內(nèi)存區(qū)域: 圖 V8 引擎管理的 JavaScript
    的頭像 發(fā)表于 10-21 11:40 ?536次閱讀
    WebGL/Canvas <b class='flag-5'>內(nèi)存</b>泄露分析

    串口DMA接收方式打開,為什么在開啟IDLE中斷的情況下還需要開啟DMA中斷呢?

    戶接口rx_indicate來讀取數(shù)據(jù),此時(shí),串口收到的數(shù)據(jù)并不一定是完整的幀,破壞了使用IDLE中斷的意義。所以,為什么要開啟DMA中斷呢? 此處,可以看到不論是IDLE中斷還是DMA傳輸中斷,都會(huì)導(dǎo)致用戶回調(diào)的調(diào)用。
    發(fā)表于 09-29 08:30

    水泥廠料機(jī)與取料機(jī)無線連鎖控制解決方案實(shí)施案例

    在水泥廠的生產(chǎn)流程中,料機(jī)和取料機(jī)協(xié)同作業(yè)至關(guān)重要。某大型水泥廠的料區(qū)和取料區(qū)相隔一定距離,以往采用有線連接實(shí)現(xiàn)二者的連鎖控制,但隨著生產(chǎn)規(guī)模擴(kuò)大和設(shè)備老化,問題頻發(fā)。
    的頭像 發(fā)表于 09-02 18:06 ?992次閱讀
    水泥廠<b class='flag-5'>堆</b>料機(jī)與取料機(jī)無線連鎖控制解決方案實(shí)施案例

    工業(yè)網(wǎng)關(guān)的內(nèi)存有什么功能

    工業(yè)網(wǎng)關(guān)的內(nèi)存是其核心硬件組件之,承擔(dān)著保障設(shè)備高效、穩(wěn)定運(yùn)行的關(guān)鍵作用,具體功能可從以下幾個(gè)方面詳細(xì)說明: 、臨時(shí)數(shù)據(jù)存儲(chǔ)與處理 實(shí)時(shí)數(shù)據(jù)緩存:工業(yè)網(wǎng)關(guān)需要實(shí)時(shí)采集來自傳感器、PLC(可
    的頭像 發(fā)表于 08-15 10:15 ?687次閱讀

    等等黨不一定會(huì)贏,但小鵬G7一定會(huì)!

    行業(yè)資訊
    腦極體
    發(fā)布于 :2025年07月15日 15:50:41