当前位置:网站首页>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 ~
边栏推荐
- February 13, 2022 -5- maximum depth of binary tree
- February 13, 2022-4-symmetric binary tree
- Three.JS VR看房
- Déterminer si un arbre binaire est un arbre binaire complet
- 【Note17】PECI(Platform Environment Control Interface)
- [speech processing] speech signal denoising and denoising based on MATLAB low-pass filter [including Matlab source code 1709]
- MoCo: Momentum Contrast for Unsupervised Visual Representation Learning
- Week 17 homework
- Three.js-01 入门
- Metasploit(msf)利用ms17_010(永恒之蓝)出现Encoding::UndefinedConversionError问题
猜你喜欢
Activate function and its gradient
终于搞懂什么是动态规划的
openresty ngx_lua请求响应
Use of metadata in golang grpc
LeetCode102. Sequence traversal of binary tree (output by layer and unified output)
Fix the memory structure of JVM in one article
VOT toolkit environment configuration and use
视频标准二三事
Hainan Nuanshen tea recruits warmhearted people: recruitment of the product experience recommender of Nuanshen multi bubble honey orchid single cluster
[screen recording] how to record in the OBS area
随机推荐
Evolution of APK reinforcement technology, APK reinforcement technology and shortcomings
Registration of Electrical Engineering (elementary) examination in 2022 and the latest analysis of Electrical Engineering (elementary)
Nacos installation and service registration
TOPSIS code part of good and bad solution distance method
First, redis summarizes the installation types
Expectation, variance and covariance
openresty ngx_ Lua request response
利用LNMP实现wordpress站点搭建
Debian 10 installation configuration
CJ mccullem autograph: to dear Portland
Starting from 1.5, build a micro Service Framework -- log tracking traceid
Starting from 1.5, build a micro Service Framework -- log tracking traceid
LabVIEW打开PNG 图像正常而 Photoshop打开得到全黑的图像
3 find the greatest common divisor and the least common multiple
Error when LabVIEW opens Ni instance finder
SPSS analysis of employment problems of college graduates
Global and Chinese markets for children's amusement facilities 2022-2028: Research Report on technology, participants, trends, market size and share
Simple and beautiful method of PPT color matching
Multi sensor fusion of imu/ electronic compass / wheel encoder (Kalman filter)
[screen recording] how to record in the OBS area