类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
xiexie
网友回答:
建立一个10个字符的字符串,将原来的5个字符拷贝过来,删除原有的字符串
如果是指针型的,就是要你分配个大内存,将你原来内容拷贝过来,然后删除原来的内存
动态分配类型如string,carray,vector等实际上本质和上面都是一样的,只不过用户用的方便些,所以支持动态分配内存的动态数组,最好也要设大点,不然会降低效率的
如果使用char[],没有什么办法可以达到,除非:
char buf[5];
char *pt=new char[10];
memcpy(pt, buf, 5);
然后用pt
如果使用new char[],那就 这样
char *buf = new char[5];
...
char *pt = buf;
buf = new char[10];
memcpy(buf, pt, 5);
delete[]pt;
如果上述不是char 或者其他内置类型,memcpy改成
std::copy
void *realloc( void *memblock, size_t size );
重新分配存储器块,若成功则返回指向该存储器块的指针,否则返回NULL
下面的代码中内存区域buffer的大小从存放5个char改为能存放10个char:
并且原来的5个char不改变
#include<iostream>
#include<malloc.h>
int main()
{
char* buffer;
buffer=(char*)malloc(5*sizeof(char)); //注意:下面用realloc函数其中申请空间也是用malloc的所以这里不应该用new;而且下面应该用free来释放空间
buffer[0]=a;
buffer[1]=b;
buffer[2]=c;
buffer[3]=d;
buffer[4]= ;
std::cout<<buffer<<std::endl;
buffer=(char*)realloc(buffer,10 * sizeof(char));
buffer[5]=e;
buffer[6]=f;
buffer[7]=g;
std::cout<<buffer<<std::endl;
free(buffer);
system("Pause");
return 0;
}
但是如果一开始如果是char buffer[5];我就不知道怎么弄了,听高手怎么说