当前位置:网站首页>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 ~
边栏推荐
- Leecode learning notes
- Déterminer si un arbre binaire est un arbre binaire complet
- Use of grpc interceptor
- Event trigger requirements of the function called by the event trigger
- 判断二叉树是否为完全二叉树
- Douban scoring applet Part-2
- d3dx9_ What if 29.dll is missing? System missing d3dx9_ Solution of 29.dll file
- Vcomp110.dll download -vcomp110 What if DLL is lost
- Evolution of APK reinforcement technology, APK reinforcement technology and shortcomings
- Go语言实现原理——锁实现原理
猜你喜欢
Go语言实现原理——锁实现原理
d3dx9_ What if 29.dll is missing? System missing d3dx9_ Solution of 29.dll file
Getting started stm32--gpio (running lantern) (nanny level)
February 13, 2022-4-symmetric binary tree
[speech processing] speech signal denoising and denoising based on Matlab GUI low-pass filter [including Matlab source code 1708]
Fix the memory structure of JVM in one article
【Note17】PECI(Platform Environment Control Interface)
终于搞懂什么是动态规划的
VOT toolkit environment configuration and use
Masked Autoencoders Are Scalable Vision Learners (MAE)
随机推荐
Tiktok__ ac_ signature
2022 G3 boiler water treatment simulation examination and G3 boiler water treatment simulation examination question bank
Use of shell:for loop
终于搞懂什么是动态规划的
Marginal probability and conditional probability
The difference between MVVM and MVC
3 find the greatest common divisor and the least common multiple
Krypton Factor-紫书第七章暴力求解
Common model making instructions
How to quickly understand complex businesses and systematically think about problems?
VOT Toolkit环境配置与使用
MoCo: Momentum Contrast for Unsupervised Visual Representation Learning
Three.JS VR看房
Commonly used probability distributions: Bernoulli distribution, binomial distribution, polynomial distribution, Gaussian distribution, exponential distribution, Laplace distribution and Dirac delta d
Global and Chinese markets of tantalum heat exchangers 2022-2028: Research Report on technology, participants, trends, market size and share
一文搞定JVM的内存结构
一文搞定垃圾回收器
Element positioning of Web Automation
Overview of Fourier analysis
如何快速理解复杂业务,系统思考问题?