回 帖 发 新 帖 刷新版面

主题:关于C++中的new和delete

double *pBuffer = new double(src.size()); 
for (int i = 0; i < (int)src.size(); ++i) 

*pBuffer = src[i]; 
pBuffer++; 

delete pBuffer; 
要把vector <double> src中的数据拷到pBuffer中,上述for循环能不能坐到这一点? 
最后一句delete出现_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)错误,为什么?应该怎样清空内存?

回复列表 (共3个回复)

沙发

double *pBuffer = new double(src.size());
double *pBuffer = new double[src.size()];

板凳


//分配内存用中括号 
double *pBuffer = new double[src.size()];

//好习惯,先清空内存
memset(pBuffer,0,sizeof(double)*src.size());

//迭代器指针
vector<double>::itrator pos = src.begin();

for(;pos != src.end(); ++pos)//注意是左加,而不是pos++,这样会出错,STL一般只支持左加
{
    pBuffer[i] = (*pos);
}

//使用该缓冲区
......

//用完释放内存
delete []pBuffer;
pBuffer = NULL;

3 楼

[]和()有什么区别?语法上好像都没错误
[quote]double *pBuffer = new double(src.size());
double *pBuffer = new double[src.size()];[/quote]

我来回复

您尚未登录,请登录后再回复。点此登录或注册