亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? o32.htm

?? C++ Builder學習中文版,讓學者對其有一定的理解.
?? HTM
字號:
 

<html>

<head>

<title>關于指針和內存的幾個問題</title>

<meta http-equiv="目錄類型" content="文本/html; 字符集=gb2312">

<link rel="stylesheet" href="../bcbget.myric/o/Css.css" tppabs="http://bcbget.myrice.com/o/Css.css">

</head>

<body bgcolor="#FFFFFF">

<table width="100%" border="0" height="285">

  <tr> 

    <td height="35"> 

      <div align="center" class="p14"><font color="#000000">關于指針和內存的幾個問題</font></div>

    </td>

  </tr>

  <tr valign="top"> 

    <td>

      <p>一、"delete p" 會刪去 "p" 指針,還是它指到的資料,"*p" ?   

      <p>&nbsp;&nbsp;&nbsp; 該指針指到的資料。"delete" 真正的意思是:「刪去指針指到的東西」(delete the thing   

        pointed to by)。同樣的英文誤用也發生在 C 語言的「釋放」指標所指向的記憶體("free(p)"真正的意思是:&quot;free_the_stuff_pointed_to_by(p)&quot;   

        )。   

      <p>二、能 "free()" 掉由 "new" 配置到的、"delete" 掉由  

      &quot;malloc()&quot;   

        配置到的記憶體嗎?   

      <p>&nbsp;&nbsp; 不行。在同一個程式里,使用 malloc/free 及 new/delete 是完全合法、合理、安全的;但 free   

        掉由 new 配置到的,或 delete 掉由 malloc 配置到的指標則是不合法、不合理的。 <br>  

        &nbsp;   

      <p>三、為什麼該用 "new" 而不是 malloc() ?   

      <p>&nbsp;&nbsp;&nbsp; 建構子/解構子、型別安全性、可被覆蓋(overridability)。建構子/解構子:和 "malloc(sizeof(Fred))"   

        不同,"new Fred()" 還會去呼叫Fred 的建構子。同理,"delete p" 會去呼叫 "*p" 的解構子。 <br>  

        &nbsp;&nbsp;&nbsp; 型別安全性:malloc() 會傳回一個不具型別安全的 "void*",而 "new Fred()"   

        則會傳回正確型態的指標(一個 "Fred*")。 <br>  

        &nbsp;&nbsp;&nbsp; 可被覆蓋:"new" 是個可被物件類別覆蓋的運算子,而 

      &quot;malloc&quot; 不是以「各個類別」作為覆蓋的基準。   

      <p>四、為什麼 C++ 不替 "new" 及 "delete" 搭配個  

      &quot;realloc()&quot; ?   

      <p>&nbsp;&nbsp;&nbsp; 避免你產生意外。當 realloc() 要拷貝配置區時,它做的是「逐位元 bitwise」的拷貝,這會弄壞大   

        <br>  

        部份的 C++ 物件。不過 C++ 的物件應該可以自我拷貝才對:用它們自己的拷貝建構子或設定運算子。   

      <p>五、該怎樣配置/釋放陣列?  

      <p>&nbsp;&nbsp;&nbsp; 用 new[] 和 delete[] :   

      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fred* p = new Fred[100]; <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //... <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete [] p;   

      <p>&nbsp;&nbsp;&nbsp; 每當你在 "new" 運算式中用了 "[...]" 的話,你就 *!*必須*!* 在 "delete"   

        陳述中使用 "[]" 。這語法是必要的,因為「指向單一元素的指標」與「指向一個陣列的指標」在語法上并無法區分開來。   

      <p>六、萬一我忘了將 "[]" 用在 "delete" 由 "new  

      Fred[n]&quot; 配置到的陣列,會發生什麼事?   

      <p>&nbsp;&nbsp;&nbsp; 災難。這是程式者的--而不是編譯器的--責任,去確保 new[] 與 delete[] 的正確配對。若你弄錯了,編譯器不會產生任何編譯期或執行期的錯誤訊息。堆積(heap)被破壞是最可能的結局,或是更糟的,你的程式會當掉。   

      <p>七、成員函數做 "delete this" 的動作是合法的(并且是好的)嗎?   

      <p>&nbsp;&nbsp;&nbsp; 只要你小心的話就沒事。所謂的「小心」是: <br>  

        1) 你得 100% 確定 "this" 是由 "new" 配置來的(而非 "new[]",亦非自訂的&nbsp;&nbsp; "new"   

        版本,一定要是最原始的 "new")。 <br>  

        2) 你得 100% 確定該成員函數是此物件最後一個會去呼叫的。 <br>  

        3) 做完自殺的動作 ("delete this;") 後,你不能再去碰 "this" 的物件了,包括資料及運作行為在內。 <br>  

        4) 做完自殺的動作 ("delete this;") 後,你不能再去碰 "this" 指標了。換句話說,你不能查看它、將它與其他指標或是   

        NULL 相比較、印出其值、對它轉型、對它做任何事情。   

      <p>&nbsp;&nbsp;&nbsp; 很自然的,這項警告也適用於:當 "this" 是個指向基底類別的指標,而解構子不是virtual 的場合。   

      <p>八、該怎麼用 new 來配置多維陣列?   

      <p>&nbsp;&nbsp;&nbsp; 有很多方法,端視你對陣列大小的伸縮性之要求而定。極端一點的情形,如果你在編譯期就知道所有陣列的維度,你可以靜態地配置(就像   

        C 一樣):   

      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class Fred { /*...*/ };   

      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void manipulateArray() <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fred matrix[10][20];   

      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //使用 

      matrix[i][j]...  

      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //不須特地去釋放該陣列 <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }   

      <p>&nbsp;&nbsp;&nbsp; 另一個極端情況,如果你希望該矩陣的每個小塊都能不一樣大,你可以在自由記憶體里配置之:   

      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void manipulateArray(unsigned   

        nrows, unsigned ncols[]) <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //'nrows' 是該陣列之列數。 <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //所以合法的列數為 (0, nrows-1) 開區間。   

        <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //'ncols[r]' 則是 'r' 列的行數 ('r'   

        值域為 [0..nrows-1])。 <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fred** matrix =   

        new Fred*[nrows]; <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (unsigned r   

        = 0; r &lt; nrows; ++r) <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; matrix[r]   

        = new Fred[ ncols[r] ];   

      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //使用 

      matrix[i][j]...  

      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //釋放就是配置的反動作:   

        <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (r = nrows;   

        r &gt; 0; --r) <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete   

        [] matrix[r-1]; <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete [] matrix;   

        <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }   

      <p>九、怎樣確保某類別的物件都是用 "new" 建立的,而非區域或整體/靜態變數?   

      <p>&nbsp;&nbsp;&nbsp; 確定該類別的建構子都是 "private:" 的,并定義個 "friend" 或 "static"   

        函數,來傳回一個指向由 "new" 建造出來的物件(把建構子設成 "protected:",如果你想要有衍生類別的話)。   

      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class Fred {&nbsp;&nbsp;&nbsp;   

        //只允許 Fred 動態配置出來 <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public: <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static Fred* create()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   

        { return new Fred();&nbsp;&nbsp;&nbsp;&nbsp; } <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static Fred* create(int   

        i)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {   

        return new Fred(i);&nbsp;&nbsp;&nbsp; } <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static Fred* create(const   

        Fred&amp; fred) { return new Fred(fred); } <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private: <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fred(); <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fred(int i); <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fred(const Fred&amp;   

        fred); <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; virtual ~Fred();   

        <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };   

      <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; main() <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fred* p = Fred::create(5);   

        <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete p; <br>  

        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>  

        &nbsp; <br>  

      </p>  

     </td>  

  </tr>  

</table>  

<br>  

</body>  

</html>  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费免费| 国精品**一区二区三区在线蜜桃| 视频在线观看91| 成人性生交大片免费看中文| 91.com视频| 亚洲日穴在线视频| 国产一区二区0| 日韩亚洲欧美成人一区| 一区二区三区四区在线播放 | 五月激情综合网| 91香蕉国产在线观看软件| 精品剧情v国产在线观看在线| 亚洲va在线va天堂| 欧美在线制服丝袜| 国产精品乱码一区二区三区软件| 极品美女销魂一区二区三区免费| 欧美日韩三级视频| 亚洲美女免费视频| 91浏览器入口在线观看| 日韩一区二区三区免费看| 亚洲va国产va欧美va观看| 色老汉av一区二区三区| 亚洲欧美日韩在线不卡| av中文字幕在线不卡| 国产色综合一区| 国产成人一级电影| 中日韩免费视频中文字幕| 国产高清久久久| 久久久99精品免费观看不卡| 国产在线精品一区二区| 2021中文字幕一区亚洲| 久久精品国产精品亚洲红杏| 欧美一区二区免费观在线| 亚洲国产成人高清精品| 欧美日韩国产在线观看| 五月开心婷婷久久| 欧美大片在线观看一区| 黄一区二区三区| 欧美激情中文不卡| 成人av在线播放网址| 亚洲欧美日韩中文播放| 在线观看欧美日本| 日韩精品高清不卡| 欧美mv日韩mv国产网站app| 韩国v欧美v亚洲v日本v| 国产亚洲成年网址在线观看| 成人免费黄色大片| 亚洲日本丝袜连裤袜办公室| 欧美午夜理伦三级在线观看| 婷婷综合久久一区二区三区| 日韩精品一区二区三区视频在线观看 | 午夜精品久久久久久久久| 欧美一区二区女人| 国产不卡免费视频| 一区二区视频在线| 欧美麻豆精品久久久久久| 精品一区二区三区不卡 | 精品成人在线观看| av高清不卡在线| 天天综合网 天天综合色| 国产亚洲欧美在线| 欧美久久久影院| 免费高清成人在线| 国产精品久久久久久久久快鸭| 欧美性生活久久| 国产精品一区在线观看你懂的| 日韩久久一区二区| 日韩精品一区二区三区中文精品| 成人免费毛片片v| 天天亚洲美女在线视频| 中文字幕国产一区二区| 欧美性猛片aaaaaaa做受| 国产一区不卡视频| 亚洲永久免费视频| 亚洲国产精品成人综合| 在线成人免费视频| 不卡电影一区二区三区| 日本不卡免费在线视频| 亚洲少妇中出一区| 久久久久久久久久久久电影| 91浏览器入口在线观看| 国产成人99久久亚洲综合精品| 亚洲一区二区三区视频在线播放 | 国产日韩欧美精品在线| 7777精品久久久大香线蕉| www.久久精品| 国产精品中文有码| 日韩国产在线观看一区| 亚洲美女精品一区| 亚洲国产精品ⅴa在线观看| 精品蜜桃在线看| 7777精品久久久大香线蕉| 在线观看av一区| 91丨九色丨蝌蚪富婆spa| 丰满放荡岳乱妇91ww| 精品一区在线看| 免费在线观看不卡| 日韩激情视频在线观看| 亚洲成a人v欧美综合天堂下载| 中文字幕欧美一| 国产亚洲精品资源在线26u| 日韩欧美成人一区| 日韩欧美国产一区二区在线播放| 精品视频资源站| 欧美午夜一区二区三区| 欧美天天综合网| 欧美在线视频不卡| 欧美午夜精品久久久久久超碰| 久久精品99国产精品日本| 免费黄网站欧美| 老司机精品视频在线| 日韩高清国产一区在线| 日本三级亚洲精品| 天天综合日日夜夜精品| 天堂久久久久va久久久久| 青青草国产成人av片免费| 免费观看在线综合| 麻豆精品在线播放| 国产一区二区三区高清播放| 国产精品综合一区二区| 国产成人免费在线视频| 高清免费成人av| 91蜜桃在线免费视频| 欧美亚洲国产一区二区三区| 欧美精选在线播放| 日韩欧美电影一区| 国产午夜精品一区二区三区嫩草 | 国产精品久久久久久久久动漫| 国产精品福利在线播放| 亚洲三级久久久| 亚洲国产精品久久人人爱| 蜜臀av在线播放一区二区三区| 狠狠色综合播放一区二区| 成人美女在线观看| 日本韩国一区二区三区视频| 3d动漫精品啪啪一区二区竹菊 | 国产呦精品一区二区三区网站| 东方aⅴ免费观看久久av| 色综合久久综合网| 制服丝袜亚洲色图| 久久午夜羞羞影院免费观看| 成人免费在线视频观看| 午夜婷婷国产麻豆精品| 国产精品一区二区你懂的| 91小视频在线| 日韩精品一区二区三区四区视频 | 国产精品视频观看| 亚洲国产欧美日韩另类综合 | 日产欧产美韩系列久久99| 国产成人自拍网| 欧美少妇bbb| 国产欧美在线观看一区| 亚洲曰韩产成在线| 国产精品亚洲第一区在线暖暖韩国| 91欧美一区二区| 精品国产亚洲一区二区三区在线观看 | 亚洲欧美日韩在线播放| 久久99热狠狠色一区二区| 91久久香蕉国产日韩欧美9色| 精品久久一区二区| 亚洲一区成人在线| 国产高清精品在线| 欧美一级在线视频| 亚洲日本电影在线| 国模娜娜一区二区三区| 欧美日韩精品免费观看视频| 中文字幕亚洲区| 国产乱码精品1区2区3区| 欧美久久久久久久久中文字幕| 中文字幕不卡在线播放| 美脚の诱脚舐め脚责91| 欧美日本在线视频| 亚洲视频在线一区二区| 国产麻豆视频一区二区| 日韩区在线观看| 亚洲成人免费av| 在线看国产一区二区| 综合欧美亚洲日本| 国产成人精品亚洲午夜麻豆| 欧美不卡视频一区| 日本成人在线看| 欧美日韩一级黄| 亚洲香肠在线观看| 色999日韩国产欧美一区二区| 中日韩av电影| 国产精品一区二区久久精品爱涩| 欧美va亚洲va在线观看蝴蝶网| 午夜久久电影网| 欧美日韩在线综合| 亚洲国产一区二区在线播放| 一本一道综合狠狠老| 亚洲人成7777| 在线视频国产一区| 亚洲欧美日韩系列| 色婷婷综合久色| 伊人性伊人情综合网| 在线区一区二视频| 亚洲大尺度视频在线观看| 欧美午夜精品电影| 午夜精品久久久久久不卡8050|