<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. 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

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人