12個常見C語言面試題及答案(2)

時間:2024-08-07 21:07:18 學人智庫 我要投稿
  • 相關推薦

12個常見C語言面試題及答案(2)

  if(NULL == ptr)

12個常見C語言面試題及答案(2)

  {

  printf("\n Malloc failed \n");

  return;

  }

  else

  {

  // Do some processing }

  return; }

  答:盡管上面的代碼并沒有釋放分配給“ptr”的內存,但并不會在程序退出后導致內存泄漏。在程序結束后,所有這個程序分配的內存都會自動被處理掉。但如果上面的代碼處于一個“while循環”中,那將會導致嚴重的內存泄漏問題!

  提示:如果你想知道更多關于內存泄漏的知識和內存泄漏檢測工具,可以來看看我們在Valgrind上的文章。

  5.free()函數

  問:下面的程序會在用戶輸入’freeze’的時候出問題,而’zebra’則不會,為什么?

  #include int main(int argc, char *argv[]) {

  char *ptr = (char*)malloc(10);

  if(NULL == ptr)

  {

  printf("\n Malloc failed \n");

  return -1;

  }

  else if(argc == 1)

  {

  printf("\n Usage \n");

  }

  else

  {

  memset(ptr, 0, 10);

  strncpy(ptr, argv[1], 9);

  while(*ptr != 'z')

  {

  if(*ptr == '')

  break;

  else

  ptr++;

  }

  if(*ptr == 'z')

  {

  printf("\n String contains 'z'\n");

  // Do some more processing }

  free(ptr);

  }

  return 0; }

  答:這里的問題在于,代碼會(通過增加“ptr”)修改while循環里“ptr”存儲的地址。當輸入“zebra”時,while循環會在執行前被終止,因此傳給free()的變量就是傳給malloc()的地址。但在“freeze”時,“ptr”存儲的地址會在while循環里被修改,因此導致傳給free()的地址出錯,也就導致了seg-fault或者崩潰。

  6.使用_exit退出

  問:在下面的代碼中,atexit()并沒有被調用,為什么?

  #include void func(void) {

  printf("\n Cleanup function called \n");

  return; } int main(void) {

  int i = 0;

  atexit(func);

  for(;i<0xffffff;i++);

  _exit(0); }

  這是因為_exit()函數的使用,該函數并沒有調用atexit()等函數清理。如果使用atexit()就應當使用exit()或者“return”與之相配合。

  7.void*和C結構體

  問:你能設計一個能接受任何類型的參數并返回interger(整數)結果的函數嗎?

  答:如下:

  int func(void *ptr)

  如果這個函數的參數超過一個,那么這個函數應該由一個結構體來調用,這個結構體可以由需要傳遞參數來填充。

  8.*和++操作

  問:下面的操作會輸出什么?為什么?

  #include int main(void) {

  char *ptr = "Linux";

  printf("\n [%c] \n",*ptr++);

【12個常見C語言面試題及答案(2)】相關文章:

計算機二級C語言考試選擇題(帶答案)(2)06-10

java面試題及答案10-03

計算機二級c語言考試習題及答案07-03

名校英語面試經典常見的面試題10-21

經典常見面試題分析解答08-14

職稱英語衛生類C級真題及答案(word版)(2)06-10

c語言實習總結06-30

c語言讀書筆記09-28

2005年職稱英語考試衛生類(C級)試題及答案(2)09-01

2006年職稱英語考試衛生類(C級)試題及答案(2)07-24

国产v亚洲v天堂无码网站,综合亚洲欧美日韩一区二区,精品一级毛片A久久久久,欧美一级待黄大片视频
在线看日本免费a∨按摩 | 亚洲性久久久影院 | 最新精品国偷自产在线 | 尤物yw193国产在线观看不卡 | 亚洲一区二区精品久久AV | 亚洲国产日本午夜aⅴ |