Re: [問題] pointer assignment
int *p
p是一個指標,它可以指向你機器記憶體的任何一個地方,
但是,所指的地方,能不能讀取,或是能不能寫入,看系統而定。
它的default值,有的compiler給它的是0x00000000
這個地方可以說是系統的地方,不許寫入的。
我以前用的大部份compiler沒有自動給default value
stack那時放了什麼值,就是那個值了,
所以它的值會是什麼,沒有人知道,所以可能是任何數值,
沒加以設定,你去讀它寫它數值中的記憶體位置,
可能會是系統禁止你去讀取或寫入的地方。
運氣好,它沒有error message但你也不知道記憶體這個地方的值代表什麼。
※ 引述《changyuheng (張昱珩)》之銘言:
: 問題(Question):
: void swap(int * a, int * b) {
: int * p; // 好像有看過 p 要給 default value,
: // 否則在 asign 時可能會因為 p 指向的是 non-writable 的 memory,
: // 而產生問題。請問是否有此一說,或應該怎麼找資料?
: *p = *a;
p目前你沒有指定地方,所以p裡面所指的記憶體位置,不明,
它有可能是你16G記憶體的某個地方,也有可能超過16G,這還不含虛擬記憶體。
這時你將a所指的內容,放進p所指的記憶體裡不明位置,會發生什麼,很難說
: *a = *b; *b = *p;
: }
--
看了神鵰俠侶,就應該知道年齡不是問題;
看了斷背山後,就應該知道性別不是問題;
看了金剛後,就應該明白是不是人也不是問題;
看了倩女幽魂以後,更要知道活不活著都不是問題……
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.43.48.81
※ 編輯: shemale 來自: 115.43.48.81 (05/27 16:08)
推
05/27 18:08, , 1F
05/27 18:08, 1F
推
05/27 18:13, , 2F
05/27 18:13, 2F
推
05/27 18:15, , 3F
05/27 18:15, 3F
→
05/27 23:17, , 4F
05/27 23:17, 4F
→
05/28 00:01, , 5F
05/28 00:01, 5F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):