c語言程式設計,編譯成功,但是除錯失敗怎麼回事。。求助

時間 2021-08-30 10:39:51

1樓:匿名使用者

樓主你好!

你是不是發現編譯沒有報錯!但是一旦執行就會進入異常而中斷報錯!

我通過除錯發現是棧溢位而造成的異常中斷!

這個問題還得從你的 float x[60000][15] 說起。且不算後面定義的變數,通過計算我們知道大概將近3.6m左右!

這個設計到程式的堆疊問題!不知道你是否瞭解程式的反彙編,簡單的說,每個程式都有自己的棧,你定義的區域性變數就在這個棧上!而這個棧不是無限的大的,在windows下,棧是向低地址擴充套件的資料結構,是一塊連續的記憶體的區域。

這句話的意思是棧頂的地址和棧的最大容量是系統預先規定好的,在windows下,棧的大小是2m,如果申請的空間超過棧的剩餘空間時,將提示overflow!具體可以去了解一下程式的反彙編!

因此,你**本身沒有錯誤,但是執行不起來是棧溢位了!

如果,你還是想要分配60000個15個成員float型別的數值,那你就得使用malloc來申請空間,malloc申請的空間是在堆上的,malloc函式你自己可以去了解,這個跟棧是不一樣的,有興趣可以去了解堆和棧的區別!

以上是我的看法,希望我的回答對你有幫助!

2樓:鏡面世界

(60000*15+3)*8[float]+13*1[char]+2*4[file*]=7200045個位元組,合將近7m的記憶體,你夠嗎?

c語言程式設計除錯後沒有錯誤但是卻無法執行是怎麼回事?

3樓:匿名使用者

無法執行可bai能遇到的du問題:

編譯沒錯,但是zhi執行後彈出記憶體相關dao報錯------》有邏

版輯錯誤,或者記憶體呼叫錯權誤

執行直接閃退---------------》有可能該程式無任何執行結果輸出語句,或者使用編譯器(or ide)與作業系統不相容

暫時只能想起這麼多了。

4樓:12端木歪歪

能編譯才能執行,除錯只是分部進行。

c語言程式設計除錯後沒有錯誤但是卻無法執行是怎麼回事?

5樓:位同書戴秋

無法執行可能遇到的問題:

1.編譯沒錯,但是執行後彈出記憶體相關報錯------》有邏輯錯誤,或者記憶體呼叫錯誤

2.執行直接閃退---------------》有可能該程式無任何執行結果輸出語句,或者使用編譯器(or

ide)與作業系統不相容

暫時只能想起這麼多了。

c語言程式設計時編譯沒有錯誤,執行時卻顯示有一個錯誤。為什麼? 5

6樓:匿名使用者

不沒有寫max函式的具體定義,在主函式中又要使用這個函式,系統找不到,自然就錯了。你把max函式的定義寫全了,就沒事了。

7樓:ongame卓傑

你沒有寫max()函式的原型啊,這讓編譯器怎麼理解max()?

8樓:匿名使用者

重新建立一個專案 過 重新編譯就可以。

9樓:

刪掉# include

int main()

{int max(int x,int y);

int a,b,c;

。。。中的【int max(int x,int y);】

剛考完全國計算機二級c語言 ,最後一題程式設計題編譯執行成功,而且儲存了檔案,但最後交卷的時候顯示未做

10樓:匿名使用者

我也是的,但我執行成功後,答案正確,退出來我刪了一個分號編譯了一下,又加上在此編譯了一下,但沒有再次執行;你確定你執行成功了且之後沒有再修改程式

11樓:癯月笑浮生

額,你記不記得有沒有生成檔案

12樓:super賽影酷柚

哎,我也是,第一次考,我的程式設計是指標連結串列題,指過去又指過來的弄了半個多小時,最後執行成功,但是交卷的時候給我顯示未作答,然後再三確認有沒有問題,哎,弄得我心情很不爽!!!

13樓:來自水杉王深情的海洋

我也是這個情況,來來回回折騰幾道,除錯了也執行了,但就是顯示沒做

14樓:小桃子

我剛考完,跟你一樣,問下你最後有成績嗎

為什麼c語言程式設計編譯時找不出錯誤,卻在執行時程式自動關閉!!求高手指點

15樓:

dos下的c

要支援中文還是比較麻煩的

樓主可能要杯具了

char *s;改為char s[100];試下定義陣列會分配確定的空間

定義指標不會有確定的空間,指標必須要與某變數繫結

16樓:

額!把你想要的效果 和注意事項發上來 我看看,我也是剛入手c語言

17樓:

執行完之後直接就會關閉,建議你最後放一個scanf,然後就會暫停了。

18樓:517441905哈哈

將char *s改為char s[50]

C語言編譯成功,執行後不久就錯誤 各位幫忙

以下程式段有問題 typedef struct ys 型別定義問題,可以改成 typedef strcutys main int m,i,a,e,z,k,b int p int q ys m m定義成指標,但無所指 null 改成 ys node,m m node printf 請輸入多少個 sca...

菜鳥java 編譯成功執行出錯

public class arraycopydemo char copyto new char 2 system.arraycopy copyfrom,2,copyto,0,2 system.out.println new string copyto system.arraycopy copyfro...

可以編譯成可執行程式exe)嗎

vs下的c 有兩種,託管的,和非託管的。所謂託管 由公共語言執行庫環境 而不是直接由作業系統 執行,在執行時分兩階段 1.源 編譯為託管 所以源 可以有很多種,如vb,c j 2.託管 編譯為microsoft系統的.net平臺專用檔案 如類庫 可執行檔案等 非託管 在公共語言執行庫環境的外部,由作...