[問題] 利用雙重指標存取位址發生的問題

看板C_and_CPP作者時間15年前 (2011/03/02 15:12), 編輯推噓4(409)
留言13則, 6人參與, 最新討論串1/1
開發平台(Platform): Dev-C++ 問題(Question): 關於下列的程式,我用 Dev-C++ 編譯時沒有發生問題, 但執行時,windows 卻告訴我程式有問題,必須關閉,但不知為何會這樣?? int main(void) { int **p; int a = 10; *p = &a; } 就我的理解,*p 中存放的值應該是一指向 int 的位址, 而今我把 int 型態的變數 a 之位址存入 *p 中,應該是正確的,編譯時也沒有出錯, 但不知為何 windows 就是不給執行?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.49.217

03/02 15:14, , 1F
但你並沒說 p 指向哪裡 故 *p 就會掛點...
03/02 15:14, 1F

03/02 15:15, , 2F
微軟會把p的預設值設很大,你對那個預設位址取值就會當
03/02 15:15, 2F

03/02 15:22, , 3F
剛講錯,不應該講取值,應該講那裡禁止寫入,可是你寫了
03/02 15:22, 3F

03/02 15:32, , 4F
03/02 15:32, 4F

03/02 15:32, , 5F
03/02 15:32, 5F

03/02 15:33, , 6F
應該不難發現你少做了什麼事
03/02 15:33, 6F

03/02 15:37, , 7F
其實就跟這段錯的是一樣的http://nopaste.csie.org/17f98
03/02 15:37, 7F

03/02 16:05, , 8F
謝謝L大的提點和j大的程式碼,我想我懂了
03/02 16:05, 8F

03/02 16:06, , 9F
眼底*星*空,Error開始墜落
03/02 16:06, 9F

03/02 16:18, , 10F
我剛試著用&(*p)取*p的位址,其值為2,而該位址禁止寫入
03/02 16:18, 10F

03/02 16:19, , 11F
故執行 *p=&a 時,程式才會當掉,不知這是否是p大的原意
03/02 16:19, 11F
※ 編輯: apolntust 來自: 114.39.49.217 (03/02 16:22)

03/02 17:06, , 12F
int **p;下面加一行p=malloc(4);看看
03/02 17:06, 12F

03/03 00:39, , 13F
1樓大神講得很清楚啊
03/03 00:39, 13F
文章代碼(AID): #1DRUtlh5 (C_and_CPP)