生成很大的可執(zhí)行文件

當(dāng)我們想生成很大的可執(zhí)行文件時(shí),我們應(yīng)該怎么操作呢?

我們都知道,可執(zhí)行文件,或者說elf/bin文件中,保存的是代碼段和數(shù)據(jù)段。bbs段在文件中不體現(xiàn)大小,而局部變量也是放在棧上的,在文件中也體現(xiàn)不出大小。

因此,要讓elf/bin文件變大,有幾種選擇:

  • 讓數(shù)據(jù)段變大
  • 讓代碼段變大

讓代碼段變大,不是很好弄,畢竟難道要不停敲代碼嗎?我又不是鍵盤俠!那么,就讓數(shù)據(jù)段變大吧!讓數(shù)據(jù)段變大:

寫一個(gè)很大的全局變量數(shù)組

但這要如何實(shí)現(xiàn)呢?

int test[1000];

但這樣,沒有初始化的全局變量會被放到.bss段,因此我們在鏈接腳本里需要把.bss段也放到.data段才行。但,有沒有更簡單的方法?

int test[1000] = {666,};

如果像上面這個(gè)樣子,有時(shí)候可行,但很多時(shí)候,elf/bin并不會變大。那么,我們可以這樣:

int test[1000] = {[0 ... 1000-1] = 666};

這是C語法新特性,它的意思是,對test數(shù)組的1000成員分別賦值為666,是不是很簡單?也很神奇!

出差必備

買火車票、高鐵票、機(jī)票,訂酒店都打9折的出行工具TRIP,點(diǎn)擊注冊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容