成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

c++ - win764位環(huán)境下,我用GCC為什么指針占8個字節(jié),而long是4個字節(jié)?

瀏覽:188日期:2022-10-12 09:24:08

問題描述

我用的工具是CFree套了個gcc的殼,寫代碼的時候偶然發(fā)現(xiàn),sizeof指針是字節(jié),而long是4字節(jié)。

且跑一個malloc最大申請空間代碼的測試程序得到結(jié)果是1.99g,所以說明這個程序應(yīng)該還是32位的程序,

那么為什么指針的sizeof是8個字呢 ?

問題解答

回答1:

int long short具體多少字節(jié)都是implement defined ,具體多少看編譯器實現(xiàn),沒有絕對的多少,只有同一個編譯器才保證大小一致

如果要sizeof指針的話,確保你用的是sizeof(void*)

MinGW是LLP64,long就是32位。

注意你malloc的時候,參數(shù)使用signed int表示時,那么在你申請2Gb內(nèi)存的時候,有可能把一個超過2^31的數(shù)放進(jìn)了signed int,數(shù)據(jù)溢出導(dǎo)致malloc失敗,你應(yīng)該使用size_t

如果你好奇你的程序是多少位,可以打開任務(wù)管理器,32位的進(jìn)程后面會有*32的標(biāo)記

標(biāo)簽: Windows系統(tǒng) win7