當(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)擊注冊