9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦>創業指南>職場>面試題>

嵌入式軟件工程師面試題:動態內存分配

時間: 敏敏644 分享

  動態內存分配(Dynamic memory allocation)

  1、盡管不像非嵌入式計算機那么常見,嵌入式系統還是有從堆(heap)中動態分配內存的過程的。那么嵌入式系統中,動態分配內存可能發生的問題是什么?

  這里,我期望應試者能提到內存碎片,碎片收集的問題,變量的持行時間等等。這個主題已經在ESP雜志中被廣泛地討論過了(主要是 P.J. Plauger, 他的解釋遠遠超過我這里能提到的任何解釋),所有回過頭看一下這些雜志吧!讓應試者進入一種虛假的安全感覺后,我拿出這么一個小節目:下面的代碼片段的輸出是什么,為什么?

  Char *ptr;

  if ((ptr = (char *)malloc(0)) == NULL)

  puts("Got a null pointer");

  else

  puts("Got a valid pointer");

  這是一個有趣的問題。最近在我的一個同事不經意把0值傳給了函數malloc,得到了一個合法的指針之后,我才想到這個問題。這就是上面的代碼,該代碼的輸出是“Got a valid pointer”。我用這個來開始討論這樣的一問題,看看被面試者是否想到庫例程這樣做是正確。得到正確的答案固然重要,但解決問題的方法和你做決定的基本原理更重要些。

  Typedef

  2、 Typedef 在C語言中頻繁用以聲明一個已經存在的數據類型的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子:

  #define dPS struct s *

  typedef struct s * tPS;

  以上兩種情況的意圖都是要定義dPS 和 tPS 作為一個指向結構s指針。哪種方法更好呢?(如果有的話)為什么?

  這是一個非常微妙的問題,任何人答對這個問題(正當的原因)是應當被恭喜的。答案是:typedef更好。思考下面的例子:

  dPS p1,p2;

  tPS p3,p4;

  第一個擴展為

  struct s * p1, p2;

  上面的代碼定義p1為一個指向結構的指,p2為一個實際的結構,這也許不是你想要的。第二個例子正確地定義了p3 和p4 兩個指針。

  晦澀的語法

  3、C語言同意一些令人震驚的結構,下面的結構是合法的嗎,如果是它做些什么?

  Int a = 5, b = 7, c;

  c = a+++b;

  這個問題將做為這個測驗的一個愉快的結尾。不管你相不相信,上面的例子是完全合乎語法的。問題是編譯器如何處理它?水平不高的編譯作者實際上會爭論這個問題,根據最處理原則,編譯器應當能處理盡可能所有合法的用法。因此,上面的代碼被處理成:

  c = a++ + b;

  因此, 這段代碼持行后a = 6, b = 7, c = 12。

  如果你知道答案,或猜出正確答案,做得好。如果你不知道答案,我也不把這個當作問題。我發現這個問題的最大好處是:這是一個關于代碼編寫風格,代碼的可讀性,代碼的可修改性的好的話題

204024 主站蜘蛛池模板: 无码综合天天久久综合网| 亚洲夜夜欢一区二区三区| 精品无码国产自产拍在线观看蜜| 中文字幕亚洲精品人妻| 久久人体视频| 亚洲午夜伦费影视在线观看| 福利视频一区二区在线| 国产午夜精品福利免费不| 亚洲av无码一区二区三区网站| 久久精品A一国产成人免费网站| 天堂在线最新版av观看| 成人免费无码大片A毛片抽搐色欲| 少妇极品熟妇人妻| 日韩女同一区二区三区久久| 伊人久久大香线蕉av五月天| 久久精品国产亚洲AV麻豆长发| 中文字幕国产精品自拍| 五月丁香六月狠狠爱综合| 国产一区二区三区黄色片| 亚洲熟女精品一区二区| 亚洲日本精品一区二区| 精品国产丝袜自在线拍国语| 九九视频热最新在线视频| 亚洲精品日本久久一区二区三区| 精品999日本久久久影院| 中文字幕亚洲精品第一页| 亚洲男人第一无码av网| 精品国产免费人成在线观看| 亚洲一区二区精品另类| 成人亚洲国产精品一区不卡| 亚洲人成人网站色www| 亚洲中文精品久久久久久不卡| 青青草无码免费一二三区 | 午夜精品国产自在| 亚洲精品中文av在线| 亚洲av第一区二区三区| 国产精品一区二区三区蜜臀| 亚洲av色夜色精品一区| 免费国产高清在线精品一区| 国产精品亚洲一区二区三区| 内射一区二区三区四区|