当前位置:网站首页>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 .
边栏推荐
- Hcip seventh operation
- 1. AVL tree: left-right rotation -bite
- Two person game based on bevy game engine and FPGA
- Differences and introduction of cluster, distributed and microservice
- TCC of distributed transaction solutions
- What are the common message queues?
- Five core elements of architecture design
- Use Zhiyun reader to translate statistical genetics books
- [Oracle] simple date and time formatting and sorting problem
- 得物客服一站式工作台卡顿优化之路
猜你喜欢
爬虫练习题(三)
WEB架构设计过程
随机生成session_id
bat 批示处理详解
Five core elements of architecture design
得物客服一站式工作台卡顿优化之路
How Alibaba cloud's DPCA architecture works | popular science diagram
Realize GDB remote debugging function between different network segments
Unity keeps the camera behind and above the player
集群、分布式、微服务的区别和介绍
随机推荐
Realize GDB remote debugging function between different network segments
Aidl and service
JD commodity details page API interface, JD commodity sales API interface, JD commodity list API interface, JD app details API interface, JD details API interface, JD SKU information interface
Leakage relay jd1-100
Flink SQL realizes reading and writing redis and dynamically generates hset key
拼多多商品详情接口、拼多多商品基本信息、拼多多商品属性接口
Batch size setting skills
The 2022 China low / no code Market Research and model selection evaluation report was released
bat 批示处理详解
MySQL-CentOS7通过YUM安装MySQL
Getting started with DES encryption
Leetcode 1189 maximum number of "balloons" [map] the leetcode road of heroding
爬虫练习题(三)
Senior programmers must know and master. This article explains in detail the principle of MySQL master-slave synchronization, and recommends collecting
5. 数据访问 - EntityFramework集成
What is message queuing?
【已解决】记一次EasyExcel的报错【读取xls文件时全表读不报错,指定sheet名读取报错】
Digital innovation driven guide
说一说MVCC多版本并发控制器?
5. Data access - entityframework integration