?? subject_59554.htm
字號:
<p>
序號:59554 發表者:about blank 發表日期:2003-11-08 17:09:02
<br>主題:對VC 6報有懷疑的人看這里
<br>內容:我在做一個銀行家算法的時候,發現了V6的一點問題:在自定義函數調用的時候,同樣的代碼經常出現:ACCESS VIOLATION的警告,然后調試窗口跳到內存地址的圖象上(見附圖),但是有時卻可以通過,我用同樣的代碼在VC7甚至TC上都可以通過,并且查代碼錯誤已經快要暴頭了,別人說大概是VC6的BUG,但是我覺得還是自己代碼的邏輯錯誤。<BR>代碼和錯誤圖象都在附件中,求教<BR> 至誠
<br><a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p>
<hr size=1>
<blockquote><p>
回復者:xiongli 回復日期:2003-11-08 17:13:44
<br>內容:你給個出錯的輸入阿!
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:xiongli 回復日期:2003-11-08 17:16:24
<br>內容:算了算了<BR>晚上我復習一下銀行家算法了給你看
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:about blank 回復日期:2003-11-08 17:20:55
<br>內容:輸入:1,1,0,2<BR>在VC7中的回答是正確的‘COMPLETE’
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:about blank 回復日期:2003-11-08 17:27:18
<br>內容:即使在追蹤過程中,在PROCESS()里一步一步走,只要PROCESS一結束,回到MAIN中,馬上抱錯,我都郁悶了,好漢,留下QQ
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:xiongli 回復日期:2003-11-08 17:29:42
<br>內容:please input your request:user(0~4):<BR>1<BR>input the number of resource a:<BR>1<BR>input the number of resource b:<BR>0<BR>input the number of resource c:<BR>2<BR>sorry,we cannot help you!<BR>Press any key to continue<BR>我怎么沒出錯阿<BR>
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:about blank 回復日期:2003-11-08 17:31:47
<br>內容:是用V6嗎,難道是我的有問題?<BR>
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:about blank 回復日期:2003-11-08 17:34:41
<br>內容:麻煩您老追蹤一下,SAFETY——CHK()返回值是1嗎,如果沒中斷,應該結果是”COMPLETE‘啊<BR>謝了,
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回復者:xiongli 回復日期:2003-11-08 17:41:05
<br>內容:please input your request:user(0~4):<BR>1<BR>input the number of resource a:<BR>1<BR>input the number of resource b:<BR>0<BR>input the number of resource c:<BR>2<BR>safety_chk's result 0<BR>sorry,we cannot help you!<BR>Press any key to continue<BR><BR><BR><BR><BR>修改后的代碼如下:<BR>#include<stdio.h><BR>struct claim<BR>{<BR> int user;<BR> int num[3];<BR>}claims;<BR>int input()<BR>{<BR> printf("please input your request:user(0~4):\n");<BR> scanf("%d",&claims.user);<BR> printf("input the number of resource a:\n");<BR> scanf("%d",&claims.num[0]);<BR> printf("input the number of resource b:\n");<BR> scanf("%d",&claims.num[1]);<BR> printf("input the number of resource c:\n");<BR> scanf("%d",&claims.num[2]);<BR> return 1;<BR>}<BR>int safety_chk(int alloc[][3],int need[][3],int avail[3])<BR>{<BR> int work[3],finish[5];<BR> for(int p=0;p<5;p++)//i大于2后對WORK是無意義的<BR> {<BR> work[p]=avail[p];<BR> finish[p]=0;<BR> }<BR> for(int i=0;i<5;i++) <BR> {<BR> if(finish[i]==0&&<BR> need[i][0]<=work[0]&&<BR> need[i][1]<=work[1]&&<BR> need[i][2]<=work[2] )<BR> {<BR> for(int j=0;j<3;j++)<BR> work[j]=alloc[i][j]+work[j];<BR> finish[i]=1;<BR> i=-1;//重頭再來<BR> }<BR> }<BR> for(i=0;i<5;i++)<BR> {<BR> if(finish[i]==0)<BR> return 0;<BR> }<BR> return 1;<BR>}<BR><BR>int process(int alloc[][3],int need[][3],int avail[3])<BR>{<BR> int ret;<BR> input();<BR> for(int i=0;i<3;i++) //out of resource number<BR> {<BR> if(claims.num[i]>need[claims.user][i]||claims.num[i]>avail[i])<BR> return 0;<BR> }<BR> for(i=0;i<3;i++)//trying<BR> {<BR> avail[i]=avail[i]-claims.num[i];<BR> alloc[claims.user][i]=alloc[claims.user][i]+claims.num[i];<BR> need[claims.user][i]=need[claims.user][i]-claims.num[i];<BR> }<BR> if((ret=safety_chk(alloc,need,avail)==0))<BR> {<BR>/*****************************************************/<BR> printf("safety_chk's result %d \n",0);<BR> for(i=0;i<3;i++)<BR> {<BR> avail[i]=avail[i]+claims.num[i];<BR> alloc[claims.user][i]=alloc[claims.user][i]-claims.num[i];<BR> need[claims.user][i]=need[claims.user][i]+claims.num[i];<BR> }<BR> return 0;<BR> }<BR> else<BR> {<BR>/***************************************************/<BR> printf("safety_chk's result %d \n",1);<BR> }<BR> return 1;<BR>}<BR>void main()<BR>{<BR> int alloc[5][3]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};<BR> int need[5][3]={{7,4,3},{1,2,2},{6,0,0},{0,1,1},{4,3,1}};<BR> int avail[3]={3,3,2};<BR> if(process(alloc,need,avail)==0)<BR> printf("sorry,we cannot help you!\n");<BR> else printf("operation complete!\n"); <BR> return;<BR>}
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:xiongli 回復日期:2003-11-08 17:42:25
<br>內容:偶除了跟mfc打交道的時候遇上過編譯器亂來<BR>其他時候vc的編譯器還是好樣的!
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:about blank 回復日期:2003-11-08 17:43:09
<br>內容:請你吃飯!
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:xiongli 回復日期:2003-11-08 17:45:21
<br>內容:不好意思<BR>剛剛吃了.謝謝你.<BR>你到底弄出來了沒有阿
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:dr0 回復日期:2003-11-08 17:54:07
<br>內容:這個程序的確有問題,safe_chk()返回時候的stack被破壞了
<br>
<a href="javascript:history.go(-1)">返回上頁</a><br><a href=http://www.copathway.com/cndevforum/>訪問論壇</a></p></blockquote>
<hr size=1>
<blockquote><p>
回復者:dr0 回復日期:2003-11-08 17:57:13
<br>內容:.<BR>2003-11-8 18:01:19
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -