<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] ## 題目一: ``` void GetMemory( char *p ) {  p = (char *) malloc( 100 ); } void Test( void ) {  char *str = NULL;  GetMemory( str );  strcpy( str, "hello world" );  printf( str ); } ``` 【運行錯誤】傳入GetMemory(char\* p)函數的形參為字符串指針,在函數內部修改形參并不能真正的改變傳入形參的值。執行完后的str仍然為NULL。編譯器總是要為每個參數制作臨時副本,指針參數p的副本是_p,編譯器使_p=p。如果函數體內的程序修改了_p的內容,就導致參數p的內容作相應的修改,這就是指針可以用作輸出參數的原因。在本例中,**_p申請了新的內存,只是把_p所指的內存地址改變了,但是p絲毫未變**。所以GetMemory并不能輸出任何東西。**事實上,每執行一次GetMemory就會泄露一塊內存,因為沒有用free釋放內存。** ## 題目二: ``` char *GetMemory( void ) {  char p[] = "hello world";  return p; } void Test( void ) {  char *str = NULL;  str = GetMemory();  printf( str ); } ``` 【運行錯誤】GetMemory中的p是個數組,在{}里面定義是個局部變量,在函數返回后,內存已經被釋放。這是很多程序員常犯的錯誤,其根源在于不理解變量的生存期。用調試器逐步跟蹤Test,發現執行str=GetMemory語句后str不再是NULL指針,但是str的內容不是“hello world”,而是垃圾。 ## 題目三: ``` ?voidtest(void) { ? ?? ? ? ? char*s = 0x0; ? ? ? ?s = getMem(); ? ? ? ?printf(s); ?} 1.char* getMem(void) { ? ?? ? ? ? char*p = “hello world ”; ? ? ? ?return p; ?} ``` ?成功 helloworld字符串存放在常量區,這個地方存放的內容并不會在函數結束后銷毀。? ?p最后依然指向這里
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看