青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Kisser Leon

這個kisser不太冷
posts - 100, comments - 102, trackbacks - 0, articles - 0

placement new 操作符

Posted on 2007-04-06 10:23 kk 閱讀(3297) 評論(1)  編輯 收藏 引用 所屬分類: IT

在處理內存分配的時候,C++程序員會用new操作符(operator new)來分配內存,并用delete操作符(operator delete)來釋放內存。這是一個new操作符的例子。

class CTest
{
     
/* 成員函數和成員數據 */
};

// . . . 代碼

//
分配一個對象
CTest * pTest = new Test;
// 分配一個有十個對象的數組 (CTest 要有缺省構造函數(default constuctor)
CTest * p10Tests = new Test[ 10];

雖然這種寫法在大多數時候都工作得很好,但還是有些情況下使用new是很煩人的,比如當你想重新分配一個數組或者當你想在預分配的內存上構造一個對象的時候。

比如第一種情況,重新分配一個數組效率是很低的:

// 分配一個有10個對象的數組
CTest * pTests = new Test[ 10];
// . . .
//
假設現在我們需要11個對象
CTest * pNewTests = new Test[ 11];
// . . . 我們必須把原來的對象拷貝到新分配的內存中
for ( int i = 0; i < 10; i++)
    pNewTests[ i] = pTests[ i];
delete pTests;
pTests = pNewTests;

如果你想在預分配的內存上創建對象,用缺省的new操作符是行不通的。要解決這個問題,你可以用placement new構造。它允許你構造一個新對象到預分配的內存上:

// buffer 是一個void指針 (void *)
//
用方括號[] 括起來的部分是可選的
[CYourClass * pValue = ] new( buffer) CYourClass[( parameters)];

下面是一些例子:

#include <new>

class CTest
{
public:
    CTest()
    {}
    CTest( int)
    {}
    
/* 代碼*/
};

int main(int argc, char* argv[])
{

    //
由于這個例子的目的,我們不考慮內存對齊問題
    char strBuff[ sizeof( CTest) * 10 + 100];
    CTest * pBuffer = ( CTest *)strBuff;

    
// 缺省構造
    CTest * pFirst = new(pBuffer) CTest;

    
// 缺省構造
    CTest * pSecond = new(pBuffer + 1) CTest;
    
    
// 帶參數的構造;
    //
不理會返回的指針
    new(pBuffer + 2) CTest( 5);

    
// 帶參數的構造
    CTest * pFourth = new( pBuffer + 3) CTest( 10);

    
// 缺省構造
    CTest * pFifth = new(pBuffer + 4) CTest();

    
// 構造多個元素(缺省構造)
    CTest * pMultipleElements = new(pBuffer + 5) CTest[ 5];
    return 0;
}

當你有自己的內存緩沖區或者在你實現自己的內存分配策略的時候,placement new會很有用。事實上在STL中廣泛使用了placement new來給容器分配內存;每個容器類都有一個模版參數說明了構造/析構對象時所用的分配器(allocator)。

在使用placement new的時候,你要記住以下幾點:

  • 加上頭文件#include <new>
  • 你可以用placement new構造一個數組中的元素。
  • 要析構一個用placement new分配的對象,你應該手工調用析構函數(并不存在一個“placement delete”)。它的語法如下:

pFirst->~CTest();
pSecond->~CTest();
//  . . . 等等

 

Google

Feedback

# re: placement new 操作符  回復  更多評論   

2012-09-20 10:59 by 會飛的兔子
不錯,正好在找這個
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产日本精品| 国产精品久久久久久久久久久久久久 | 亚洲国产成人久久综合| 欧美视频在线观看一区| 欧美大片在线观看| 国产麻豆午夜三级精品| 日韩午夜激情av| 有码中文亚洲精品| 香蕉乱码成人久久天堂爱免费| 一本久久a久久精品亚洲| 亚洲尤物在线视频观看| 亚洲综合第一页| 欧美成人精品福利| 久久综合伊人77777麻豆| 国产精品羞羞答答xxdd| 日韩亚洲欧美成人一区| 亚洲乱亚洲高清| 免费观看不卡av| 免费人成精品欧美精品| 国产综合色产在线精品| 亚洲自拍偷拍网址| 一区二区日韩欧美| 亚洲人精品午夜| 欧美国产视频日韩| 亚洲经典三级| 亚洲欧洲日韩女同| 欧美—级在线免费片| 欧美国产91| 亚洲国内欧美| 欧美久久久久免费| 亚洲人成在线免费观看| a4yy欧美一区二区三区| 欧美日韩亚洲一区二区三区在线| 亚洲国产成人精品久久| 亚洲精品在线三区| 欧美日韩黄色大片| 欧美一二三视频| 国产免费一区二区三区香蕉精| 亚洲视频免费看| 欧美一区深夜视频| 国产在线麻豆精品观看| 伊人成年综合电影网| 欧美国产免费| 亚洲日本欧美在线| 亚洲伦理自拍| 欧美日韩视频在线| 亚洲午夜免费视频| 欧美伊人久久久久久久久影院| 国产精品女人网站| 久久久福利视频| 亚洲国产女人aaa毛片在线| 在线性视频日韩欧美| 国产精品久久久久9999| 久久爱www| 亚洲人成7777| 欧美在线免费一级片| 亚洲第一伊人| 欧美性一二三区| 久久久久久久波多野高潮日日 | 黑人中文字幕一区二区三区| 久久久久久久精| 日韩视频在线一区二区| 欧美影院在线| 日韩视频免费观看高清在线视频 | 可以看av的网站久久看| 亚洲人成艺术| 国产免费亚洲高清| 欧美黄色日本| 欧美中文字幕在线视频| 亚洲免费av电影| 亚洲欧洲在线看| 久久www成人_看片免费不卡| 一色屋精品视频免费看| 国产精品v日韩精品v欧美精品网站| 欧美伊人久久| 99热精品在线观看| 久久综合九色| 欧美一级精品大片| 亚洲美女黄色片| 一区二区视频免费在线观看| 日韩午夜av| 国产日韩欧美日韩| 小嫩嫩精品导航| 一本到高清视频免费精品| 久久久天天操| 午夜精品一区二区三区四区 | 国产一区91| 欧美午夜一区二区| 欧美成人自拍| 久久亚洲图片| 久久九九有精品国产23| 亚洲砖区区免费| 亚洲视频在线观看一区| 亚洲精品一区二区在线| 六月丁香综合| 久久蜜桃资源一区二区老牛 | 国产一区高清视频| 国产精品视频yy9299一区| 欧美激情成人在线| 国产精品久久久久久久午夜片| 亚洲精品欧美| 亚洲精品欧美日韩| 亚洲精选一区| 亚洲国产精品传媒在线观看 | 欧美一进一出视频| 最近中文字幕日韩精品| 国产日韩欧美在线看| 国产精品视频一区二区三区| 欧美日韩精品久久| 久久久国际精品| 久久久久五月天| 久久精品视频va| 久久精品人人做人人综合| 欧美一区二区三区视频免费播放 | 亚洲伦伦在线| 洋洋av久久久久久久一区| 亚洲精品视频免费| 日韩一区二区精品| 亚洲特黄一级片| 亚洲——在线| 欧美在线观看日本一区| 久久激情视频久久| 蘑菇福利视频一区播放| 欧美伦理91i| 欧美日韩一区在线观看视频| 欧美日本不卡高清| 欧美日韩1区2区3区| 欧美精品久久久久久久免费观看| 欧美日韩精品二区第二页| 国产精品www| 国产婷婷精品| 亚洲国产三级网| 一本色道久久综合亚洲精品不卡| 亚洲视频自拍偷拍| 亚洲男同1069视频| 久久激情视频| 欧美黄色成人网| 亚洲欧美日韩中文视频| 欧美在线在线| 久久久999精品免费| 免费不卡在线观看av| 欧美—级高清免费播放| 国产乱码精品一区二区三区忘忧草 | 亚洲国产欧美一区二区三区同亚洲 | 亚洲一区二区三区影院| 久久av免费一区| 亚洲大胆av| 99国产一区二区三精品乱码| 欧美亚洲一级| 麻豆91精品| 国产精品日本欧美一区二区三区| 影音先锋久久| 亚洲综合三区| 欧美va天堂| 宅男66日本亚洲欧美视频| 欧美一区二区三区免费大片| 欧美精品久久久久久| 国产精品激情av在线播放| 一区三区视频| 小黄鸭视频精品导航| 亚洲国产三级| 欧美一区二区三区在| 欧美日韩视频不卡| 尤物精品在线| 亚洲性xxxx| 亚洲电影免费观看高清完整版在线 | 久久综合伊人| 亚洲香蕉网站| 欧美精品七区| 亚洲国产日韩欧美| 久久久久亚洲综合| 亚洲色无码播放| 欧美电影电视剧在线观看| 欧美日韩国产精品成人| 亚洲欧美大片| 欧美aaaaaaaa牛牛影院| 亚洲国产欧美一区二区三区久久 | 欧美成年人网| 亚洲在线国产日韩欧美| 欧美全黄视频| 亚洲经典视频在线观看| 久久久久五月天| 国产精品99久久久久久白浆小说| 久久夜色精品国产| 国产日韩在线一区| 亚洲无亚洲人成网站77777| 亚洲国产一成人久久精品| 久久久综合网| 在线电影一区| 欧美自拍偷拍| 99国内精品久久| 欧美成人免费播放| 最新亚洲一区| 亚洲高清久久| 欧美不卡三区| 影音先锋在线一区| 久久综合999| 欧美一区三区三区高中清蜜桃 | 国内精品国语自产拍在线观看| 欧美一级精品大片|