1樓:匿名使用者
陣列越界了!釋放的記憶體區域無法訪問。。。
a = (int *)malloc(sizeof(int));申請的4個位元組的記憶體,也就是乙個整形值的空間,
但是後來的
if(m % i == 0)
a[j]將訪問到其他的記憶體區域,而這個記憶體區域不屬於你管轄的範圍!
2樓:倒霉熊
我不明白的是
a = (int *)malloc(sizeof(int));
這裡你就分配了乙個整型變數所佔用的空間。
而下面你卻放了多個整型變數a[j],那些空間怎麼來的??
3樓:匿名使用者
你只給指標a分配了乙個int型的空間,但賦值時卻會給a[1]賦值,應該是指標越界了。
我改了一下:
a = (int *)malloc(sizeof(int)*10);
一般情況下是不會越界了。看你輸入的數字大小。
4樓:
你在malloc中只分配了乙個int的空間,但是在後面訪問的時候a[j]肯定越界了。
5樓:匿名使用者
free((void *)a);
6樓:匿名使用者
a = (int *)malloc(sizeof(int)); 只分配了乙個整型的空間
a[j] = i; 迴圈裡訪問陣列應該就會越界
樓主先把這個bug改了再看看吧
c語言free的時候程式出錯
7樓:
這可能跟你的那幾個strncpy的使用方式有關。我查了一下這個函式的手冊,大致是這麼說。這個函式在源比size大時,copy size個字元,不包括null。
在源小於size時,向目標填充足夠的null,直至size指定的大小,這是標準c規定的。
這意味著你的呼叫點會造成多個緩衝區越界,因為它們都被追加了很多0.(我想你的幾個引數應該都不到100大小吧?)
試著用正確的方式改寫那部分再試試
任何時候都應該檢查目標緩衝區是否有足夠的空間容納size個位元組,當用memcpy或者strncpy這類函式時。
或空間是否不小於源緩衝區,當用strcpy這類自動檢查null結尾的函式時,還要算上copy會自動包含的null結尾。
c語言c-free軟體怎麼進行程式設計?我的程式是正確的,可是就是顯示有錯誤。求幫忙
8樓:匿名使用者
把**更改為:
#include
int main()
執行後,電腦蜂鳴會發出一聲「嘀」。
9樓:何方科技
c free只是乙個ide,你編譯器沒有配置好,肯定就不能用了
10樓:匿名使用者
改成int main,然後main函式末尾return 0;
11樓:夜丶無言以對
樓主把源**亮出來 我以前在win8上用過c-free沒問題的
求c語言大神 , free函式 出錯
12樓:
free(p); p=p->next;
還有這樣寫的嗎?p指向的結點已經釋放了,哪兒來的p->next?所以,問題不在free而在找不到p->next了。但根源是邏輯錯誤,可以改成這樣試試:
void myfree(node *head)}
c語言為什麼在cfree上是編譯錯誤?
13樓:全思菱印錦
void
main()
可能是這裡的問題,cfree不允許主函式返回值為空?
你試著改為main();或者int
main(),需要最後加一句return0;
14樓:檢白凝枚葉
我的cfree編譯通過,是不是你的版本問題啊?我的是專業版4.1的
電腦c語言程式:vc++、c-free5全線崩潰!vc是無論任何檔案都報錯無法執行,cfree是報
15樓:無知者就是無懼
檢查一下系統時間和日期。我原來遇到過一次,被病毒把日期調到了2023年,也是各種程式無法執行,各種報錯;改回來之後問題解決。你不妨一試
c語言程式執行出錯
沒有錯啊,我在我的電腦上執行了,是可以的。應該是你vc的問題 printf c n cstr1 2 printf c n cstr1 3 printf c n cstr1 4 s改為 c s要求對應引數是個指標,你應該只是想輸出乙個字元而以,用 c 要輸出字串也可以,用 s,cstr1 2 如果你用...
C語言程式出錯,C語言程式沒有錯,但為什麼總顯示乙個錯誤
這個 需要重寫。比如函式putin2中,宣告的a是char型字元,後面scanf中卻要讓它接收乙個姓名字串,這樣的錯誤說明 構思很混亂,不是略改一下就能解決的 putin2函式中 char a 應該為乙個字串改為char a 100 字串a應該與運動員名字比較,也就是a與結構體的name2欄位比較。...
C語言程式程式設計,如何編寫C語言程式
把你的思路想好,想要達到什麼樣的功能,思路清晰後就可以一個一個功能的去寫,出錯了不用急,想一下自己錯在什麼地方,好好的看一下 雖然這樣做會花很多 的時間,但是這樣做會提高自己的閱讀分 能力,啊?書上不是有麼 自己學著寫啊 10.include main printf n 如何編寫c語言程式?首先,你...