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;
}

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

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

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

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

然后把程序運(yùn)行起來,多測試幾遍,也確實(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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    9

    文章

    3170

    瀏覽量

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

    關(guān)注

    90

    文章

    3707

    瀏覽量

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

    關(guān)注

    30

    文章

    4940

    瀏覽量

    73083

原文標(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)推薦

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

    RT,初始化串口,發(fā)送數(shù)據(jù)然后休眠,串口工具會(huì)收到CW32L010發(fā)送的一堆? ,AI統(tǒng)計(jì)了下 128個(gè)字節(jié),是什么原因啊?
    發(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 ?887次閱讀

    不一樣的展會(huì),不一樣的精彩 2025灣芯展圓滿收官

    10月17日,2025灣區(qū)半導(dǎo)體產(chǎn)業(yè)生態(tài)博覽會(huì)(2025灣芯展)在深圳會(huì)展中心(福田)圓滿收官。全球600多家展商、超30場論壇,在6萬平方米的展區(qū)內(nèi),打造場“不一樣的展會(huì)”,呈現(xiàn)出“不一樣的精彩
    的頭像 發(fā)表于 10-29 16:56 ?1018次閱讀
    <b class='flag-5'>不一</b>樣的展會(huì),<b class='flag-5'>不一</b>樣的精彩 2025灣芯展圓滿收官

    如何在應(yīng)用程序調(diào)試期間分析棧和使用情況

    隨著 AMD Vitis 統(tǒng)軟件平臺(tái) 2021.2 的發(fā)布,Vitis 引入了個(gè) Tcl 腳本,用于在應(yīng)用程序運(yùn)行的特定時(shí)間點(diǎn)協(xié)助查找棧和內(nèi)存使用情況。該腳本已延續(xù)到后續(xù)的 V
    的頭像 發(fā)表于 10-24 16:54 ?562次閱讀
    如何在應(yīng)用程序調(diào)試期間分析棧和<b class='flag-5'>堆</b>使用情況

    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 ?150次閱讀
    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 ?579次閱讀
    水泥廠<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 ?417次閱讀

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

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

    :整流電路的“中流砥柱”

    大家好!今天我們來聊聊電子電路中個(gè)非常重要的元器件——橋。無論是家用電器、工業(yè)設(shè)備,還是通信設(shè)備,橋都扮演著不可或缺的角色。它雖然看起來不起眼,但卻是整流電路的“中流砥柱”。那
    的頭像 發(fā)表于 04-01 17:07 ?2113次閱讀

    golang內(nèi)存分配

    內(nèi)存碎片. 線程擁有一定的 cache, 可用于無鎖分配. 同時(shí) Go 對(duì)于 GC 后回收的內(nèi)存頁, 并不是馬上歸還給操作系統(tǒng), 而是會(huì)延遲歸還, 用于滿足未來的內(nèi)存需求. ?? ?
    的頭像 發(fā)表于 03-31 15:00 ?374次閱讀
    golang<b class='flag-5'>內(nèi)存</b>分配

    DLP4500需要使用近紅外光源,如何判斷這個(gè)芯片是否適用?

    因?yàn)橐獙?duì)人體掃描,之前直再看450NIR,650NIR做的投影產(chǎn)品,但這種太少還都是在國外才有的賣。 所以想問下,如果用850nm的光源,是不是用普通的DMD芯片就可以,不一定是近紅外波段的NIR系列芯片。 另外,如果有人
    發(fā)表于 02-21 17:15

    TLK2201的數(shù)據(jù)端口對(duì)應(yīng)不齊是怎么回事?

    這個(gè)片子我選擇的是unframed模式,輸入的端口0-9的數(shù)據(jù)不一定是對(duì)應(yīng)在輸出端口0-9輸出。而是在上電后,輸入輸出端口0-9是隨機(jī)循環(huán)對(duì)應(yīng)的。即有可能輸入端9-
    發(fā)表于 02-07 07:29

    指針被釋放后就變成了空指針嗎

    ;} ? ? 這段代碼大家看下有沒有問題,能不能順利運(yùn)行? 前面三行都沒有問題,指針 s 指向了內(nèi)存,把字符串 helloworld 拷貝到
    的頭像 發(fā)表于 01-22 09:23 ?644次閱讀

    兒童坐姿矯正器是如何實(shí)現(xiàn)語音提示功能?

    兒童坐姿不正影響健康,坐姿矯正器可輔助改善。NV256H等語音芯片提供清晰語音提示,支持自定義內(nèi)容,幫助孩子養(yǎng)成良好坐姿習(xí)慣,控制模式出廠前配置,上電200ms后發(fā)指令。
    的頭像 發(fā)表于 01-03 14:13 ?903次閱讀
    兒童坐姿矯正器是如何實(shí)現(xiàn)語音提示功能?