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平臺專用檔案 如類庫 可執行檔案等 非託管 在公共語言執行庫環境的外部,由作...