69,369
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
bool resizebuff(int **pBuf, int & nBnfSize)
{
if(nBnfSize < 0)
return false;
int nNoneSize = 2 * nBnfSize;
int *pTemp = new int[nNoneSize];
if(pTemp==NULL)
return false;
memset(pTemp, 0, nNoneSize*sizeof(int));
if(*pBuf != NULL)
{
memcpy(pTemp, *pBuf, nBnfSize*sizeof(int));
delete[] *pBuf;
}
*pBuf = pTemp;
nBnfSize=nNoneSize;
return true;
}
bool resizebuff(int* & pBuf, int & nBnfSize)
{
if(nBnfSize < 0)
return false;
int nNoneSize = 2 * nBnfSize;
int *pTemp = new int[nNoneSize];
if(pTemp==NULL)
return false;
memset(pTemp, 0, nNoneSize*sizeof(int));
if(pBuf != NULL)
{
memcpy(pTemp, pBuf, nBnfSize*sizeof(int));
delete[] pBuf;
}
pBuf = pTemp;
nBnfSize=nNoneSize;
return true;
}
int main()
{
int sizeBuf = 10;
int *buf = new int[sizeBuf];
for(int i = 0; i < sizeBuf; i++)
buf[i] = i;
resizebuff(buf, sizeBuf);
for(int i = 0; i < sizeBuf; i++)
cout<< buf[i]<<endl;
resizebuff(&buf, sizeBuf);
for(int i = 0; i < sizeBuf; i++)
cout<< buf[i]<<endl;
return 0;
}
//加入头文件
#include <string.h>
#include <memory.h>
bool resizebuff(int *pBuf, int &nBnfSize)
{
int nNoneSize;
int *pTemp;
nNoneSize = 2*nBnfSize;
pTemp=new int[nNoneSize];
if(pTemp == NULL)
return false;
memset(pTemp,0,nNoneSize*sizeof(int));
memcpy(pTemp,pBuf,nBnfSize); //memcpy不对pTemp和pBuf的重叠部分判断,需要换成memmove
pBuf=pTemp;
nBnfSize = nNoneSize; //nBufSize改成nBnfSize
//加入以下语句
delete(pTemp);
return true;
}