博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内存分配(mallloc,calloc,realloc,new)
阅读量:2176 次
发布时间:2019-05-01

本文共 785 字,大约阅读时间需要 2 分钟。

一、C语言分配内存的函数

#include 
void *malloc(size_t size);void *calloc(size_t nobj,size_t size);void *realloc(void *ptr,size_t newsize); ——All three return: non-null pointer if OK,NULLon errorvoid free(void *ptr);
malloc 分配size字节的大小、不进行初始化, 使用完毕需要用free释放内存空间
calloc  分配nobj个size大小的内存, 初始化为0.   使用完也是需要调用free师范内存空间,避免内存泄露
realloc 增加或减小内存空间的大小,newsize是新的大小。当ptr为空时,realloc与malloc相同

realloc会先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回,如果空间不够,先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域(注意:原来指针是自动释放,不需要使用free),同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。

malloc和calloc的差别

calloc在动态分配完内存后,自动初始化该内存空间为零,而不初始化,里边数据是随机的垃圾数据。

二、C++

new 对应delete

也是分配一块内存。

new是操作符

转载于:https://www.cnblogs.com/Windeal/archive/2013/06/07/4284690.html

你可能感兴趣的文章
Git的Patch功能
查看>>
分析C语言的声明
查看>>
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
逆序对的数量(递归+归并思想)
查看>>
数的范围(二分查找上下界)
查看>>
算法导论阅读顺序
查看>>
Windows程序设计:直线绘制
查看>>
linux之CentOS下文件解压方式
查看>>
Django字段的创建并连接MYSQL
查看>>
div标签布局的使用
查看>>
HTML中表格的使用
查看>>