<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                #### 29. 動態內存 了解動態內存在 C++ 中是如何工作的是成為一名合格的 C++ 程序員必不可少的。C++ 程序中的內存分為兩個部分: * \*\*棧:\*\*在函數內部聲明的所有變量都將占用棧內存。 * \*\*堆:\*\*這是程序中未使用的內存,在程序運行時可用于動態分配內存。 很多時候,您無法提前預知需要多少內存來存儲某個定義變量中的特定信息,所需內存的大小需要在運行時才能確定。 在 C++ 中,您可以使用特殊的運算符為給定類型的變量在運行時分配堆內的內存,這會返回所分配的空間地址。這種運算符即 **new** 運算符。 如果您不再需要動態分配的內存空間,可以使用 **delete** 運算符,刪除之前由 new 運算符分配的內存。 **new 和 delete 運算符:** 下面是使用 new 運算符來為任意的數據類型動態分配內存的通用語法: ~~~ new data-type; 復制代碼 ~~~ 在這里,**data-type** 可以是包括數組在內的任意內置的數據類型,也可以是包括類或結構在內的用戶自定義的任何數據類型。讓我們先來看下內置的數據類型。例如,我們可以定義一個指向 double 類型的指針,然后請求內存,該內存在執行時被分配。我們可以按照下面的語句使用 **new** 運算符來完成這點: ~~~ double* pvalue = NULL; // 初始化為 null 的指針 pvalue = new double; // 為變量請求內存 復制代碼 ~~~ 如果自由存儲區已被用完,可能無法成功分配內存。所以建議檢查 new 運算符是否返回 NULL 指針,并采取以下適當的操作: ~~~ double* pvalue = NULL; if( !(pvalue = new double )) { cout << "Error: out of memory." <<endl; exit(1); } 復制代碼 ~~~ **malloc()** 函數在 C 語言中就出現了,在 C++ 中仍然存在,但建議盡量不要使用 malloc() 函數。new 與 malloc() 函數相比,其主要的優點是,new 不只是分配了內存,它還創建了對象。 在任何時候,當您覺得某個已經動態分配內存的變量不再需要使用時,您可以使用 delete 操作符釋放它所占用的內存,如下所示: ~~~ delete pvalue; // 釋放 pvalue 所指向的內存 復制代碼 ~~~ 下面的實例中使用了上面的概念,演示了如何使用 new 和 delete 運算符: ~~~ void test26() { //演示如何使用 new 和 delete 運算符: //初始化為 null 的指針 double *pvalue = NULL; //為變量申請內存 pvalue = new double; //在分配的地址存儲值 *pvalue = 1314.520; //打印存儲的數字 cout << "pvalue 的地址值為:\t" << &pvalue << "\n在該地址存儲的值為:\t" << *pvalue << endl; //釋放內存 delete pvalue; //數組的動態內存分配 //動態分配,數組長度為 10 int *array = new int[10]; //釋放數組內存 delete[] array; //對象的動態內存分配 Box *testBox = new Box[10]; delete[] testBox; } 復制代碼 ~~~ > **輸出:** > > pvalue 的地址值為: 0x7ffee8b27658 在該地址存儲的值為: 1314.52 > > pvalue 的地址值為: 0x7ffee7b8c658 在該地址存儲的值為: 1314.52 調用構造函數! 調用構造函數! 調用構造函數! 調用構造函數! 調用構造函數! 調用構造函數! 調用構造函數! 調用構造函數! 調用構造函數! 調用構造函數! 調用析構函數! 調用析構函數! 調用析構函數! 調用析構函數! 調用析構函數! 調用析構函數! 調用析構函數! 調用析構函數! 調用析構函數! 調用析構函數!
                  <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>

                              哎呀哎呀视频在线观看