C++动态内存分配
realloc()
函数用来重新分配内存空间,其原型为:
void* realloc (void* ptr, size_t size);
ptr
为需要重新分配的内存空间指针,size
为新的内存空间的大小。
newbase = (ElemType *)realloc(L.elem,(L.listsize+num)*sizeof(ElemType));
以L.elem为起始地址重新分配了一个大小为(L.listsize+num)*sizeof(ElemType)的内存空间,指针newbase指向这个内存空间的起始位置
分配内存空间使用malloc
:
void* malloc (size_t size);
int *p=(int *)malloc(4*sizeof(int))
p指向一个4个int大小的内存空间calloc()
函数用来动态地分配内存空间并初始化为 0,其原型为:void* calloc (size_t num, size_t size);
与malloc类似,只是多了初始化为0的步骤
回收:
free(ptr)
释放空间,不改变指针的值
ptr指针是指向动态分配的内存的指针。指针必须指向动态分配的内存空间,否则运行时很可能会出错。
C++新增动态分配内存:
动态分配内存:
new()
T *p = new T;
这样的语句会动态分配出一片大小为sizeof(T)
字节的内存空间,并且将该内存空间的起始地址赋值给 p。
T *p =new T[N];
这样的语句动态分配出N × sizeof(T)
个字节的内存空间,这片空间的起始地址被赋值给 p。
动态回收内存:
delete
delete p;
p 是指向动态分配的内存的指针。p 必须指向动态分配的内存空间,否则运行时很可能会出错。