第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

“struct hack”在技術(shù)上是未定義的行為嗎?

“struct hack”在技術(shù)上是未定義的行為嗎?

C
蝴蝶不菲 2019-07-09 13:13:58
“struct hack”在技術(shù)上是未定義的行為嗎?我要問的是眾所周知的“結(jié)構(gòu)的最后一個(gè)成員有可變長度”的技巧。它是這樣的:struct T {     int len;     char s[1];};struct T *p = malloc(sizeof(struct T) + 100);p->len = 100;strcpy(p->s, "hello world");由于結(jié)構(gòu)在內(nèi)存中的布局方式,我們能夠?qū)⒔Y(jié)構(gòu)覆蓋在一個(gè)大于必要的塊上,并將最后一個(gè)成員視為大于1 char指定。所以問題是:這種技術(shù)在技術(shù)上是未定義的行為嗎?..我原以為是這樣的,但我很好奇標(biāo)準(zhǔn)是怎么說的。PS:我知道C99的方法,我希望答案特別堅(jiān)持上面列出的技巧版本。
查看完整描述

3 回答

?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

就像C常見問題說:

目前還不清楚它是合法的還是便攜的,但它相當(dāng)受歡迎。

以及:

..官方解釋認(rèn)為它并不嚴(yán)格符合C標(biāo)準(zhǔn),盡管它似乎在所有已知的實(shí)現(xiàn)中都有效。(仔細(xì)檢查數(shù)組邊界的編譯器可能會(huì)發(fā)出警告。)

“嚴(yán)格一致”位背后的基本原理是在規(guī)范中的一節(jié)中。J.2未定義的行為,它包括在未定義的行為列表中:

  • 數(shù)組下標(biāo)超出了范圍,即使一個(gè)對象顯然可以用給定的下標(biāo)(如lvalue表達(dá)式)訪問。

    a[1][7]

    鑒于聲明

    int a[4][5]) (6.5.6).

科第8段6.5.6加法算子還提到超出定義數(shù)組邊界的訪問是未定義的:

如果指針操作數(shù)和結(jié)果都指向同一個(gè)數(shù)組對象的元素,或者指向數(shù)組對象的最后一個(gè)元素,則計(jì)算值不會(huì)產(chǎn)生溢出;否則,行為將未定義。


查看完整回答
反對 回復(fù) 2019-07-09
  • 3 回答
  • 0 關(guān)注
  • 546 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號