• <nav id="cwumo"><code id="cwumo"></code></nav>
  • <menu id="cwumo"><strong id="cwumo"></strong></menu>

    C/C++內存的筆試題

    時間:2020-11-23 18:04:45 筆試題目 我要投稿

    C/C++有關內存的筆試題

      void GetMemory(char *p)

    C/C++有關內存的筆試題

      {

      p = (char *)malloc(100);

      }

      void Test(void)

      {

      char *str = NULL;

      GetMemory(str);

      strcpy(str, “hello world”);

      printf(str);

      }

      請問運行Test 函數會有什么樣的結果?

      答:程序崩潰。

      因為GetMemory 并不能傳遞動態內存,Test 函數中的 str 一直都是 NULL。

      strcpy(str, “hello world”);將使程序崩潰。

      char *GetMemory(void)

      {

      char p[] = “hello world”;

      return p;

      }

      void Test(void)

      {

      char *str = NULL;

      str = GetMemory();

      printf(str);

      }

      請問運行Test 函數會有什么樣的結果?

      答:可能是亂碼。

      因為GetMemory 返回的是指向“棧內存”的指針,該指針的`地址不是 NULL,但其原現的內容已經被清除,新內容不可知。

      void GetMemory2(char **p, int num)

      {

      *p = (char *)malloc(num);

      }

      void Test(void)

      {

      char *str = NULL;

      GetMemory(&str, 100);

      strcpy(str, “hello”);

      printf(str);

      }

      請問運行Test 函數會有什么樣的結果?

      答:(1)能夠輸出hello;(2)內存泄漏

      void Test(void)

      {

      char *str = (char *) malloc(100);

      strcpy(str, “hello”);

      free(str);

      if(str != NULL)

      {

      strcpy(str, “world”);

      printf(str);

      }

      }

      請問運行Test 函數會有什么樣的結果?

      答:篡改動態內存區的內容,后果難以預料,非常危險。

      因為free(str);之后,str 成為野指針,if(str != NULL)語句不起作用。

    【C/C++有關內存的筆試題】相關文章:

    華為c/c++筆試題12-19

    C/C++面試題目12-12

    華為C++筆試題12-25

    聯想C++筆試題12-24

    Sony C++筆試題12-19

    C,C++的幾個面試題小集12-27

    C++筆試題目分享12-20

    Kingsoft金山公司C/C++筆試題12-17

    C C++面試筆試題目集錦11-14

    日韩激情