当前位置:网站首页>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 .
边栏推荐
- Common skills and understanding of SQL optimization
- App clear data source code tracking
- Two person game based on bevy game engine and FPGA
- 1.AVL树:左右旋-bite
- 论文阅读【Semantic Tag Augmented XlanV Model for Video Captioning】
- 拼多多新店如何获取免费流量,需要从哪些环节去优化,才能有效提升店内免费流量
- 论文阅读【Open-book Video Captioning with Retrieve-Copy-Generate Network】
- MySQL数据库学习(8) -- mysql 内容补充
- Realize GDB remote debugging function between different network segments
- JSP setting header information export to excel
猜你喜欢

Unity让摄像机一直跟随在玩家后上方

常用消息队列有哪些?

4. Object mapping Mapster

分布式事务解决方案之TCC

LabVIEW is opening a new reference, indicating that the memory is full

张平安:加快云上数字创新,共建产业智慧生态

5. Data access - entityframework integration

京东商品详情页API接口、京东商品销量API接口、京东商品列表API接口、京东APP详情API接口、京东详情API接口,京东SKU信息接口

《HarmonyOS实战—入门到开发,浅析原子化服务》

Mapbox Chinese map address
随机推荐
In memory, I moved from CSDN to blog park!
Distributed global ID generation scheme
Flink SQL 实现读写redis,并动态生成Hset key
Common skills and understanding of SQL optimization
常用消息队列有哪些?
Digital innovation driven guide
Lombok插件
关于服装ERP,你知道多少?
App clear data source code tracking
sql优化常用技巧及理解
Pinduoduo product details interface, pinduoduo product basic information, pinduoduo product attribute interface
纪念下,我从CSDN搬家到博客园啦!
4. Object mapping Mapster
5. 数据访问 - EntityFramework集成
Intelligent annotation scheme of entity recognition based on hugging Face Pre training model: generate doccano request JSON format
CVE-2021-3156 漏洞复现笔记
Senior programmers must know and master. This article explains in detail the principle of MySQL master-slave synchronization, and recommends collecting
什么是消息队列?
SAP ABAP BDC(批量数据通信)-018
When deleting a file, the prompt "the length of the source file name is greater than the length supported by the system" cannot be deleted. Solution