c++动态内存分配/new/malloc/realloc/calloc

2022-08-01 14:39:27

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 必须指向动态分配的内存空间,否则运行时很可能会出错。

  • 作者:Moplit
  • 原文链接:https://blog.csdn.net/weixin_45118086/article/details/115206206
    更新时间:2022-08-01 14:39:27