0
点赞
收藏
分享

微信扫一扫

C++笔记:动态内存分配

耶也夜 2022-03-11 阅读 82
c++

1. C语言中的动态内存分配

1.1. malloc

void* malloc(size_t size);

malloc 将为用户分配size字节个内存,并且返回内存分配的地址,如果分配失败,那么返回0。

int * pa = (int*)malloc(4);
  • pa 是分配好的内存的地址,4是要分配的大小,如果分配失败, pa = 0。

1.2. calloc

void* calloc(size_t count, size_t size);

calloc 将为用户分配count *size字节个内存,并且返回内存分配的地址,如果分配失败,那么返回0。

int * pa = (int*)calloc(1, 4);
  • pa 是分配好的内存的地址,1是要分配元素的个数,4是要分配的每个个数的大小,如果分配失败, pa = 0。
  • pa 会将分配好的内存区域清零

1.3. realloc

void* realloc(void* _Block, size_t _Size);

realloc 将为用户重新分配内存,_Block是用户已经分配好的内存,_Size是要重新分配的大小,函数返回重新分配后的内存地址。

int * pa = (int*)malloc(4);
      pa = (int*)realloc(pa, 8);
  • pa 是重新分配后的内存的地址,8是重新分配后的大小,如果分配失败, pa = 0。

1.4. free

void free(void* _Block);

释放内存,_Block是你要释放的内存地址。

int * pa = (int*)malloc(4);
free(pa);  
pa = 0;
  • pa所占用的内存释放。
  • 内存释放之后,指针还在的,成为野指针,所以要指针也清零。

2. C++中的动态内存分配

2.1 new

数据类型* 指针变量名称 = new 数据类型;

int* pa = new int;

数据类型* 指针变量名称 = new 数据类型[数量]

int* pa = new int[5]; //分配一段能够存放5个int变量类型的内存空间
  • 注意:分配失败,pa返回0.
举报

相关推荐

0 条评论