国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【關(guān)于[C]報(bào)錯(cuò):Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted的示例及解決辦法】

這篇具有很好參考價(jià)值的文章主要介紹了【關(guān)于[C]報(bào)錯(cuò):Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted的示例及解決辦法】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

問題場(chǎng)景:

? 在我們編寫c語言程序時(shí),尤其是使用數(shù)組進(jìn)行編寫時(shí),通常會(huì)遇到一種令我們猝不及防的報(bào)錯(cuò):Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted,如圖:

【關(guān)于[C]報(bào)錯(cuò):Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted的示例及解決辦法】,android

?


問題描述

? 相信很多小伙伴遇到這個(gè)問題時(shí)都會(huì)和當(dāng)時(shí)的我一樣懵,奇葩的是這個(gè)程序明明可以成功運(yùn)行且結(jié)果無誤,但為什么在出結(jié)果的同時(shí)會(huì)彈出報(bào)錯(cuò)窗口呢?不要著急,我在這里可以為大家獻(xiàn)上我的錦薄之力,以下是我個(gè)人遇到的此類報(bào)錯(cuò)出現(xiàn)的原因、代碼場(chǎng)景以及解決辦法:

1.此類報(bào)錯(cuò)出現(xiàn)的原因通常是數(shù)組內(nèi)存越界

內(nèi)存越界我遇到過兩種情景:

(1)聲明數(shù)組時(shí)沒有規(guī)定數(shù)組元素個(gè)數(shù)的大小:

【關(guān)于[C]報(bào)錯(cuò):Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted的示例及解決辦法】,android

? 這里由于某些原因未能給大家呈現(xiàn)完整的代碼,但大家只需要知道圖中rev_intary函數(shù)的功能是將數(shù)組的所有元素倒序排列,而函數(shù)intary_rcpy是將一個(gè)數(shù)組的所有值賦給另一個(gè)數(shù)組對(duì)應(yīng)的元素,

在main函數(shù)中,我設(shè)了這樣兩個(gè)數(shù)組導(dǎo)致出現(xiàn)報(bào)錯(cuò):int m[]={5,6,8,9};int n[];

很明顯我這兩個(gè)數(shù)組都沒有標(biāo)明數(shù)組大小,但實(shí)際上問題是出在第二個(gè)數(shù)組上,因?yàn)閿?shù)組m在初始化為{5,6,8,9}時(shí),程序會(huì)根據(jù)我初始化的個(gè)數(shù)來自動(dòng)確定數(shù)組m的大小為4,我在main函數(shù)中應(yīng)用了函數(shù)intary_rcpy(m,n,4);這會(huì)使數(shù)組m的各個(gè)元素值儲(chǔ)存到數(shù)組n當(dāng)中,但由于數(shù)組n的大小我沒有給出聲明,導(dǎo)致棧溢出。

正確的做法只要給數(shù)組規(guī)定一個(gè)大小就行了:int [4];當(dāng)我這樣設(shè)出n時(shí),就不再出現(xiàn)報(bào)錯(cuò)了。

針對(duì)這類情景,總結(jié)如下

以下講解來自chatgpt:

當(dāng)你聲明一個(gè)數(shù)組時(shí),如果沒有指定數(shù)組的大小,編譯器無法知道需要為數(shù)組分配多少內(nèi)存空間。如果你在聲明數(shù)組后使用它,并且在使用過程中寫入超出數(shù)組分配的空間范圍的數(shù)據(jù),就會(huì)導(dǎo)致棧溢出。

在C/C++中,數(shù)組是在棧上分配的,它們的大小在編譯時(shí)確定。如果你聲明一個(gè)沒有指定大小的數(shù)組,編譯器無法為其分配足夠的內(nèi)存空間。因此,當(dāng)你嘗試向未分配足夠空間的數(shù)組中寫入數(shù)據(jù)時(shí),就會(huì)發(fā)生棧溢出錯(cuò)誤。

要解決這個(gè)問題,你需要在聲明數(shù)組時(shí)指定合適的大小,以確保分配足夠的內(nèi)存空間來存儲(chǔ)你要使用的數(shù)據(jù)。例如,可以聲明一個(gè)足夠大的數(shù)組來存儲(chǔ)密碼,并確保不要超出數(shù)組范圍進(jìn)行讀寫操作。另外,還可以考慮使用動(dòng)態(tài)內(nèi)存分配函數(shù)(如malloc()或new)來在堆上分配內(nèi)存。這樣,你可以根據(jù)需要?jiǎng)討B(tài)調(diào)整內(nèi)存大小,從而避免棧溢出問題。
————————————————
版權(quán)聲明:本文為CSDN博主「王三召」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_52918245/article/details/132117781

(2)數(shù)組下標(biāo)越界:

下面是一段此類錯(cuò)誤的代碼

【關(guān)于[C]報(bào)錯(cuò):Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted的示例及解決辦法】,android

? 乍一看沒有問題,實(shí)際上,我們仔細(xì)觀察,在for循環(huán)這里出現(xiàn)了問題,我們?cè)诼暶鲾?shù)組arr時(shí)明確了元素個(gè)數(shù)為5,因此arr的元素下標(biāo)應(yīng)該是從0-4,但在for循環(huán)中,我們居然讓i增加到了5,也就是說,我在最后訪問了arr[5],這就導(dǎo)致我越界了,因?yàn)?span style="color:#ff9900;">arr數(shù)組只開辟了5個(gè)整型數(shù)據(jù)元素的空間,即arr數(shù)組的可訪問元素下標(biāo)范圍在0-4之間for循環(huán)的最后一次循環(huán)明顯越界訪問了下標(biāo)為5的元素(即第6個(gè)元素).

因此會(huì)導(dǎo)致編譯器報(bào)錯(cuò)"Run-Time Check Failure #2 - Stack around the variable 'arr2' was corrupted."

2.編譯器本身問題

剛才說過,此類報(bào)錯(cuò)的原因通常是內(nèi)存越界,但也有例外,我最近就碰到了這個(gè)例外。

【關(guān)于[C]報(bào)錯(cuò):Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted的示例及解決辦法】,android【關(guān)于[C]報(bào)錯(cuò):Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted的示例及解決辦法】,android

這里我所設(shè)的函數(shù)都是關(guān)于動(dòng)態(tài)二維數(shù)組的,main函數(shù)里我的二維數(shù)組也都明確了數(shù)組大小,我左看右看也沒看出哪里出現(xiàn)了越界,于是我就到網(wǎng)上搜尋網(wǎng)友們的方案,找到了兩種可行的解決方法:

?1).把“project->配置屬性->c/c++->代碼生成->基本運(yùn)行時(shí)檢查 設(shè)置為默認(rèn)值。? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 2).創(chuàng)建數(shù)組的方式改用new或者malloc,改為正常運(yùn)行

【關(guān)于[C]報(bào)錯(cuò):Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted的示例及解決辦法】,android

3.總結(jié):

發(fā)生此報(bào)錯(cuò)一般有兩種情況:

? ? ? ? 第一 -> 數(shù)組下標(biāo)越界。這也是最常見的問題原因,解決辦法是檢查數(shù)組是否有越界情況,如果有的話創(chuàng)建一個(gè)更大的數(shù)組

? ? ? ? 第二->聲明時(shí)未規(guī)定數(shù)組大小。

? ? ? ?第三->編譯器本身的問題。(在前兩種情況不適用時(shí)考慮編譯器問題。)文章來源地址http://www.zghlxwxcb.cn/news/detail-760192.html

到了這里,關(guān)于【關(guān)于[C]報(bào)錯(cuò):Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted的示例及解決辦法】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 報(bào)錯(cuò):To see the full stack trace of the errors, re-run Maven with the -e switch.

    目錄 報(bào)錯(cuò)信息: 報(bào)錯(cuò)場(chǎng)景: 報(bào)錯(cuò)原因: ?解決方法: [ERROR] Java heap space - [Help 1] [ERROR]? [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR]? [ERROR] For more information about the errors and possible solutions, please

    2024年02月07日
    瀏覽(24)
  • 電腦藍(lán)屏:KERNEL_SECURITY_CHECK_FAILURE 分析

    電腦藍(lán)屏:KERNEL_SECURITY_CHECK_FAILURE 分析

    此KERNEL_SECURITY_CHECK_FAILURE bug 檢查的值為 0x00000139。 此 bug 檢查指示內(nèi)核檢測(cè)到關(guān)鍵數(shù)據(jù)結(jié)構(gòu)損壞。 引起電腦藍(lán)屏問題的topsecpf.sys,刪除 LIST_ENTRY損壞可能難以跟蹤,并且此 bug 檢查指示在將單個(gè)列表?xiàng)l目元素添加到列表或從列表中刪除單個(gè)列表項(xiàng)元素或從列表中刪除時(shí) (已對(duì)雙

    2024年02月11日
    瀏覽(16)
  • 程序發(fā)生run time error原因及解決方案

    程序發(fā)生run time error原因及解決方案

    屬于運(yùn)行時(shí)錯(cuò)誤, 當(dāng)程序運(yùn)行到一半,程序發(fā)生崩潰。 1 、數(shù)組過小 2 、除數(shù)為零 3、 大數(shù)組定義在函數(shù)內(nèi) 4、 指針越界 5、 還有可能是程序拋出了未接收的異常, 原因 數(shù)組過小,導(dǎo)致程序訪問到數(shù)組外的內(nèi)存區(qū)域 解決方案 適當(dāng)增大數(shù)組容量 原因 除數(shù)為零, 發(fā)生除零錯(cuò)

    2024年02月15日
    瀏覽(21)
  • Python中os.system()、subprocess.run()、call()、check_output()的用法

    os.system() 是對(duì) C 語言中 system() 系統(tǒng)函數(shù)的封裝,允許執(zhí)行一條命令,并返回退出碼(exit code),命令輸出的內(nèi)容會(huì)直接打印到屏幕上,無法直接獲取。 示例: Python 3.5 開始推薦使用這個(gè)方法執(zhí)行命令,其原型如下: 其中: args: 可以是一個(gè)字符串(當(dāng) shell=True 時(shí)),也可以

    2024年02月12日
    瀏覽(18)
  • 【node.js】關(guān)于node.js,如何解決npm should be run outside of the Node.js REPL, in your normal shell報(bào)錯(cuò)?

    【node.js】關(guān)于node.js,如何解決npm should be run outside of the Node.js REPL, in your normal shell報(bào)錯(cuò)?

    前言,安裝node方式采用的是安裝包解壓的 報(bào)如下錯(cuò)誤: npm should be run outside of the Node.js REPL, in your normal shell 在windows環(huán)境下安裝完node,其目錄結(jié)構(gòu)下會(huì)有一個(gè)node.exe文件,運(yùn)行該工具就相當(dāng)于在cmd中執(zhí)行node命令,即進(jìn)入node開發(fā)模式。 產(chǎn)生這個(gè)錯(cuò)誤的原因是你將npm命令運(yùn)行在

    2024年02月03日
    瀏覽(28)
  • 【flutter doctor HTTP host常見報(bào)錯(cuò)】HTTP Host availability check is taking a long time...

    【flutter doctor HTTP host常見報(bào)錯(cuò)】HTTP Host availability check is taking a long time...

    HTTP Host availability check is taking a long time…[!] HTTP Host Availability HTTP host “https://maven.google.com/” is not reachable. Reason: An error occurred while checking the HTTP host: 信號(hào)燈超時(shí)時(shí)間已到 1、找到flutter sdk的文件目錄,依次找到flutter/packages/flutter_tools/lib/src/http_host_validator.dart文件 2、將https://

    2024年02月12日
    瀏覽(54)
  • python subprocess.run()、subprocess.Popen()、subprocess.check_output()(執(zhí)行系統(tǒng)命令、啟動(dòng)新的進(jìn)程、連接到子進(jìn)程的輸入/輸出管道)

    python subprocess.run()、subprocess.Popen()、subprocess.check_output()(執(zhí)行系統(tǒng)命令、啟動(dòng)新的進(jìn)程、連接到子進(jìn)程的輸入/輸出管道)

    Python的subprocess模塊是用于創(chuàng)建和管理子進(jìn)程的模塊。它提供了一種在Python中調(diào)用外部命令的方式,可以執(zhí)行系統(tǒng)命令、啟動(dòng)新的進(jìn)程、連接到子進(jìn)程的輸入/輸出管道等。 subprocess.run 運(yùn)行指定的命令,并等待其完成。args參數(shù)是一個(gè)字符串或列表,表示要執(zhí)行的命令和參數(shù)。

    2024年02月09日
    瀏覽(24)
  • 【Debian】報(bào)錯(cuò):su: Authentication failure

    【Debian】報(bào)錯(cuò):su: Authentication failure

    ? ? ? ? 今天我重新刷了一個(gè)debian系統(tǒng)。 系統(tǒng)版本: 我的系統(tǒng)版本: No LSB modules are available. Distributor ID:Debian Description: Debian GNU/Linux 12 (bookworm) Release:12 Codename:bookworm ? ? ? ? 在使用su 進(jìn)入 root系統(tǒng)的時(shí)候報(bào)錯(cuò)。 ??????? ?su: Authentication failure ? ? ? ? 輸入以上的命

    2024年02月07日
    瀏覽(38)
  • 關(guān)于系統(tǒng)時(shí)間的一些time庫函數(shù)

    (??? ),hello我是 祐言 博客主頁:C語言基礎(chǔ),Linux基礎(chǔ),軟件配置領(lǐng)域博主?? 快上??,一起學(xué)習(xí)! 送給讀者的一句雞湯??: 集中起來的意志可以擊穿頑石! 作者水平很有限,如果發(fā)現(xiàn)錯(cuò)誤,可在評(píng)論區(qū)指正,感謝?? ???????? 編程中經(jīng)常用到時(shí)間表達(dá)及轉(zhuǎn)換的函數(shù),它們

    2024年02月15日
    瀏覽(24)
  • 關(guān)于docker.service: main process exited, code=exited, status=1/FAILURE問題的解決

    關(guān)于docker.service: main process exited, code=exited, status=1/FAILURE問題的解決

    環(huán)境:centos7 問題:重裝完docker后,使用systemctl restart/start docker命令時(shí),報(bào)了下面一個(gè)錯(cuò)誤。 然后百度上面各種答案。比如使用 ? vi? /etc/sysconfig/docker? 命令然后修改文件中的--selinux-enabled=false,但是我發(fā)現(xiàn)我打開文件后其實(shí)是空白的,貌似是20版本的docker不支持這種修改方式

    2024年02月12日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包