這段程式是為什麼,同乙個記憶體位址的值會不一樣?

時間 2021-05-30 14:00:14

1樓:papa pa

@Nessaj 已經回答了你的第乙個問題「a的值已經被改變了啊,為什麼還是100」

你的第二個問題是「如果把const int a = 100;寫成全域性 *p = 200;就報錯,為什麼?」

這是因為編譯器把 a 放到了 .rodata 或 .text 段,作業系統保護這些地方不被寫入,從而防止被攻擊。你強行寫入唯讀資料的行為被作業系統阻止了

附正確的寫法:

#include

using

namespace

std;

intnum

=100

;int

main

()乙個程式設計初學者就能碰到的小問題中,牽扯到了:

UB、常量摺疊、頁寫保護、const volatile/資料一致性、帶模板的過載決議

所以說 C++ 還是太難了(狗頭)

建議將此回答收錄到「如何激怒一位 C++ 愛好者?」問題中(再次狗頭)

2樓:Nessaj

通過非const指標修改const物件是UB。不要這麼幹。

不考慮UB的情況下,應該是常量摺疊了,加上volatile應該就符合你的預期。

同乙個空間是同乙個時間嗎?

揉兔尾 瀉藥我只能談我現階段的見解因為我確實沒有太多了解他們的定義是什麼。我覺得空間和時間是兩種不同的東西。把空間理解成乙個盒子,這個盒子沒有厚度。盒子裡面也什麼都沒有。這就是空間。而時間我們知道的是在運動速度不同的物體內部,時間是不同的。時間可能是裝在物體內部的一種物質。 自然 呃,物理沒那麼玄乎...

同乙個辦公位址可以註冊2個亞馬遜店鋪嗎

新之助 不可以,最好是不要,因為這樣有可能會關聯,亞馬遜有可能會秋後算帳的,乙個法人身份,乙個位址,乙個手機號碼,乙個ip和一台沒有登陸過亞馬遜賬號的電腦註冊乙個亞馬遜店鋪。不過同乙個位址還是可以註冊不同站點哦。 夢飛奇妙說 不可以,很容易店鋪被關聯,即使你做到了法人不同,營業執照不同,但還是會存在...

為什麼同乙個學校同乙個專業的研究生錄取分數差距會那麼大?

坤則考研張老師 這個還是比較容易理解吧,要是分數都一樣,確定大家不是互相抄的?任何考試,有高分,就有低分,就有分數差距。在加上研究生考試是先填報志願,肯定會有對自己信心不足的同學。考出很高的成績,卻填報的是一般的大學。 老電工 因為大部分考試成績都屬於正態分佈的,在及格線附近的人數是最多的,我們經常...