国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

memcmp比較兩個struct是否相等

2019-11-06 06:05:31
字體:
供稿:網(wǎng)友

還是深信服的題目,連續(xù)兩輪技術(shù)面試,都反復問到這個問題。雖然說是考察內(nèi)存對齊的點,但是被我自己聰明反被聰明誤了。比如:

struct MyStruct{    char a;    int b;};MyStruct A, B;memcmp(&A, &B, sizeof(MyStruct));

A和B是否可以通過memcmp來判斷是否相等。我當時脫口而出,雖然要內(nèi)存對齊,但是a后面會補三個’/0’所以還是可以判斷是否相等的。真是迷之自信!這個問題其實最主要是考察你要知道內(nèi)存對齊,MyStruct的實際大小是8就夠了。然后未初始化的全局變量,static變量,編譯器會自動初始化為0。但是局部變量的值是不確定的,必須先賦值再使用。雖然全局變量,static變量可以不初始化,但是建議還是保持好習慣,所有的變量都要先初始化再使用!所以,這里char a后面3個字節(jié)不知道原本內(nèi)存中是什么數(shù)據(jù),那么A和B是沒法進行比較是否相等的!我們不妨gdb調(diào)試看看內(nèi)存中的情況:

MyStruct A;A.a = 'a';A.b = 10;

這里寫圖片描述 這里看到,在’a’后面3個字節(jié)分別是’/344’ ‘/377’ ‘/377’,后面補齊的內(nèi)容不確定,那么就造成了memcmp不能判斷是否相等。 用gdb查看內(nèi)存 格式:x /nfu 說明: x 是 examine 的縮寫 n 表示要顯示多少個內(nèi)存單元 f 表示內(nèi)存單元顯示方式,可取如下值: x 按十六進制格式顯示變量 d 按十進制格式顯示變量 u 按十進制格式顯示無符號整型 o 按八進制格式顯示變量 t 按二進制格式顯示變量 a 按十六進制格式顯示變量 i 指令地址格式 c 按字符格式顯示變量 f 按浮點數(shù)格式顯示變量 u表示一個內(nèi)存單元的長度 b 表示單字節(jié) h 表示雙字節(jié) w 表示四字節(jié) g 表示八字節(jié)


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 临沧市| 嘉祥县| 呼玛县| 浏阳市| 嘉祥县| 山西省| 普陀区| 桐城市| 自治县| 湘乡市| 中山市| 内黄县| 马关县| 枝江市| 南川市| 东阳市| 西吉县| 河南省| 灯塔市| 宁河县| 亳州市| 普陀区| 偃师市| 太康县| 漳平市| 政和县| 射阳县| 安化县| 岚皋县| 开阳县| 泰州市| 鹤山市| 赣榆县| 拉萨市| 哈巴河县| 乡城县| 兴山县| 申扎县| 舟曲县| 四平市| 锦州市|