当前位置:网站首页>Dynamic memory management (malloc/calloc/realloc)
Dynamic memory management (malloc/calloc/realloc)
2022-07-05 23:05:00 【xaiobit_ hl】
1. Why is there dynamic memory allocation
Before learning dynamic memory allocation, the development methods we master are :
But there are two ways to open up space :
1. The size of the space opening is fixed .
2. Array is declared , Specify the length of the array , The memory he needs is allocated at compile time .
But the need for space , It's not just that . Sometimes the size of the space we need can only be known when the program is running , The way arrays open up space at compile time is not enough .
At this time, you can only try dynamic memory development .
2.malloc/calloc/realloc How is it used
malloc
calloc
realloc
3. Several classic written questions
3.1 Topic 1 :
3.2 Topic two :
3.3 Topic three
3.4 Topic four 
4. Flexible array
What is a flexible array ,C99 in , The last element in the structure is allowed to be an array of unknown size , This is called 【 Flexible array 】.
4.1 The characteristics of flexible arrays
- A flexible array member in a structure must be preceded by at least one other member .
- sizeof The size of the structure returned does not include the memory of the flexible array .
- Structures that contain flexible array members use malloc() Function to dynamically allocate memory , And the allocated memory should be larger than the size of the structure , To accommodate the period size of the flexible array .
4.2 The use of flexible arrays
So flexible array members a, It's equivalent to getting 100 A continuous space of two shaping elements .
4.3 The advantages of flexible arrays
Above type_a The structure can also be designed in this way
Above Code 1 and Code 2 It can do the same thing , however Code 1 There are two benefits to the implementation of :
The first benefit : Convenient memory release
If our code is in a function for others , You did it in there Secondary memory allocation , And return the whole structure to the user . The user calls free You can release the structure , But the user doesn't know that the members in the structure also need free, So you can't expect users to find out . therefore , If we put the memory of the structure and the memory of its members One off distribution Okay , And return a structure pointer to the user , user Do it once free You can also free up all the memory .
The second advantage : This will help to improve the access speed
Continuous memory is good for improving access speed , It also helps reduce memory fragmentation .
No ~
边栏推荐
- Using LNMP to build WordPress sites
- Google Maps case
- Southeast Asia e-commerce guide, how do sellers layout the Southeast Asia market?
- Tensor attribute statistics
- 秒杀系统的设计与实现思路
- Ieventsystemhandler event interface
- TypeError: this. getOptions is not a function
- Use of metadata in golang grpc
- Déterminer si un arbre binaire est un arbre binaire complet
- February 13, 2022-4-symmetric binary tree
猜你喜欢
Event trigger requirements of the function called by the event trigger
Go语言实现原理——锁实现原理
Vision Transformer (ViT)
Spectrum analysis of ADC sampling sequence based on stm32
Thoroughly understand JVM class loading subsystem
终于搞懂什么是动态规划的
VOT toolkit environment configuration and use
Arduino measures AC current
Alibaba Tianchi SQL training camp task4 learning notes
Un article traite de la microstructure et des instructions de la classe
随机推荐
Basic knowledge of database (interview)
Element operation and element waiting in Web Automation
audiopolicy
openresty ngx_ Lua regular expression
The maximum happiness of the party
The difference between MVVM and MVC
Arduino 测量交流电流
Metasploit(msf)利用ms17_010(永恒之蓝)出现Encoding::UndefinedConversionError问题
【Note17】PECI(Platform Environment Control Interface)
Ieventsystemhandler event interface
H5c3 advanced - player
d3dx9_ How to repair 31.dll_ d3dx9_ 31. Solution to missing DLL
LeetCode102. Sequence traversal of binary tree (output by layer and unified output)
How to quickly understand complex businesses and systematically think about problems?
Global and Chinese market of networked refrigerators 2022-2028: Research Report on technology, participants, trends, market size and share
Detailed explanation of pointer and array written test of C language
Global and Chinese markets for welding products 2022-2028: Research Report on technology, participants, trends, market size and share
Spectrum analysis of ADC sampling sequence based on stm32
Use of grpc interceptor
February 13, 2022-4-symmetric binary tree