当前位置:网站首页>Dynamic memory management
Dynamic memory management
2022-07-07 05:42:00 【hhy20020202】
Common memory development :
frequently-used int、long、char Type and output open up space , The size of the open space is fixed .
int a;// The space opened in the stack space is four bytes
char a;// The space opened in the stack space is one byte
short a;// The space opened in the stack space is two bytes
long a;// The space opened up in the stack space is eight bytes
int arr[10]={0};// Open up on the stack space 40 A contiguous space of bytes
Dynamic memory exploit function :
malloc function :void* malloc(size_t size);
malloc The basic function is to apply for continuous available space from memory , And return a pointer to this deficient space .
If the development is successful , The thief returns a pointer to the opened space .
If the development fails , Then return a null pointer , So it's using malloc Functions are generally used if Function determines the return value of the function .
int *p=(int *)malloc(40);// Open up for 10 An integer space
// Because the return type is void*, So the specific type should be set by yourself
if(p==NULL)
{
printf("%s\n",strerror(errno));
return 0;
}
free function :void free(void *ptr);
free The function is used to release dynamically opened memory space .
calloc function :void *calloc(site_t num,size_t size);
calloc The function function is to num Size is size The elements of open up a space , And initialize each byte of the space to 0.
int *p=(int *)calloc(10,sizeof(int));// open up 10 A space of integer size
int *p=(int *)malcoc(40);// open up 10 A space of integer size
malloc Function and calloc Function also opens up 40 Bytes of space , But the difference between the two functions is calloc The opened space will initialize each byte to 0.
So if there are requirements for the initial value of the open space , In general use malloc function , Define the initial value of space by yourself , Not too many requirements can be used calloc Function to open up space .
realloc function :void* realloc(void * ptr,size_t size);
realloc The function adjusts the memory size .
and realloc There may be two situations during capacity increase and adjustment :
1. After the original space, there is enough space to increase capacity .
2. There is not enough space to increase the capacity after the original space .
Appearance 1 when , Capacity expansion will not lead to changes in the original spatial data , And the situation 2, In case of capacity increase, find another large enough continuous space on the heap space to use , So the return value of the function is a new memory space .
When something happens 2 when , If you directly assign the increased space to the original space , Return when capacity increase fails NULL The pointer , The original data will be lost , So it's using realloc The function is to verify whether the augmented space is a null pointer , I'm doing an assignment .
边栏推荐
- 《HarmonyOS实战—入门到开发,浅析原子化服务》
- Flink SQL realizes reading and writing redis and dynamically generates hset key
- 上海字节面试问题及薪资福利
- Make web content editable
- CentOS 7.9 installing Oracle 21C Adventures
- TCC of distributed transaction solutions
- Distributed global ID generation scheme
- 【oracle】简单的日期时间的格式化与排序问题
- Message queuing: how to ensure that messages are not lost
- Nodejs get client IP
猜你喜欢
How does mapbox switch markup languages?
[reading of the paper] a multi branch hybrid transformer network for channel terminal cell segmentation
随机生成session_id
Design, configuration and points for attention of network unicast (one server, multiple clients) simulation using OPNET
Web Authentication API兼容版本信息
一条 update 语句的生命经历
Egr-20uscm ground fault relay
Mapbox Chinese map address
How Alibaba cloud's DPCA architecture works | popular science diagram
R语言【逻辑控制】【数学运算】
随机推荐
Flinksql 读写pgsql
常用消息队列有哪些?
The year of the tiger is coming. Come and make a wish. I heard that the wish will come true
The navigation bar changes colors according to the route
得物客服一站式工作台卡顿优化之路
淘宝商品详情页API接口、淘宝商品列表API接口,淘宝商品销量API接口,淘宝APP详情API接口,淘宝详情API接口
张平安:加快云上数字创新,共建产业智慧生态
C nullable type
三级菜单数据实现,实现嵌套三级菜单数据
Hcip seventh operation
How does mapbox switch markup languages?
[JS component] date display.
Mybaits之多表查询(联合查询、嵌套查询)
淘宝店铺发布API接口(新),淘宝oAuth2.0店铺商品API接口,淘宝商品发布API接口,淘宝商品上架API接口,一整套发布上架店铺接口对接分享
消息队列:如何确保消息不会丢失
消息队列:重复消息如何处理?
Educational Codeforces Round 22 B. The Golden Age
How to get free traffic in pinduoduo new store and what links need to be optimized in order to effectively improve the free traffic in the store
Go 语言的 Context 详解
架构设计的五个核心要素