首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

placement new 有关问题

2012-04-27 
placement new 问题C/C++ code#include newclass CTest{public:CTest(){}CTest( int){}/* 代码*/}char

placement new 问题

C/C++ code
#include <new>class CTest{public:    CTest()    {}    CTest( int)    {}    /* 代码*/};    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];




编译出错 vs2005

这是为啥

[解决办法]
VC6试了,没有错~~
C/C++ code
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];    system("pause");    return 0;}
[解决办法]
CTest似乎没有存储空间吧,具体怎样不太了解,但感觉上sizeof(CTest)=0
另外,你可以这样试试:int pBuffer;CTest *pTest=(CTest*)strBuf;pBuffer = (int)pTest; CTest * pFirst = new(pBuffer) CTest;
……
[解决办法]
测试了一下,将代码
探讨

char strBuff[ sizeof( CTest) * 10 + 100];
CTest * pBuffer = ( CTest *)strBuff;

……

热点排行