国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 资中县| 钟山县| 若尔盖县| 舒兰市| 宜君县| 永登县| 建宁县| 灵寿县| 临江市| 江孜县| 霍州市| 托克逊县| 林甸县| 台北市| 新田县| 正阳县| 龙川县| 静乐县| 米林县| 利川市| 建宁县| 唐海县| 北碚区| 凉山| 项城市| 库尔勒市| 平潭县| 四子王旗| 濮阳县| 曲水县| 八宿县| 北碚区| 黄大仙区| 祁门县| 廉江市| 温宿县| 加查县| 江孜县| 辰溪县| 阿鲁科尔沁旗| 鹰潭市|